ATSplashResponse.withMap constructor

ATSplashResponse.withMap(
  1. Map map
)

Implementation

factory ATSplashResponse.withMap(Map map) {
  var tempSplashStatus;

  // 为可能为空的字符串参数添加默认值
  var requestMessage = map['requestMessage'] as String? ?? '';
  var placementID = map['placementID'] as String? ?? '';
  var adStatus = map['callbackName'] as String? ?? '';

  // 初始化 Map 类型的额外数据
  var tempExtraMap = map.containsKey('extraDic') && map['extraDic'] != null
      ? map['extraDic']
      : {'message': 'No additional information'};

  // 处理布尔值,确保有默认值
  var isDeeplinkSuccess = map['isDeeplinkSuccess'] as bool? ?? false;
  var isTimeout = map['isTimeout'] as bool? ?? false;

  // 状态判断
  switch (adStatus) {
    case 'splashDidFailToLoad':
      tempSplashStatus = SplashStatus.splashDidFailToLoad;
      break;
    case 'splashDidFinishLoading':
      tempSplashStatus = SplashStatus.splashDidFinishLoading;
      break;
    case 'splashDidTimeout':
      tempSplashStatus = SplashStatus.splashDidTimeout;
      break;
    case 'splashDidShowSuccess':
      tempSplashStatus = SplashStatus.splashDidShowSuccess;
      break;
    case 'splashDidShowFailed':
      tempSplashStatus = SplashStatus.splashDidShowFailed;
      break;
    case 'splashDidClick':
      tempSplashStatus = SplashStatus.splashDidClick;
      break;
    case 'splashDidClose':
      tempSplashStatus = SplashStatus.splashDidClose;
      break;
    case 'splashWillClose':
      tempSplashStatus = SplashStatus.splashWillClose;
      break;
    case 'splashDidDeepLink':
      tempSplashStatus = SplashStatus.splashDidDeepLink;
      break;

    case 'splashDidMultipleLoaded':
      tempSplashStatus = SplashStatus.splashDidMultipleLoaded;
      break;
    case 'splashDidAdSourceBiddingAttempt':
      tempSplashStatus = SplashStatus.splashDidAdSourceBiddingAttempt;
      break;
    case 'splashDidAdSourceBiddingFilled':
      tempSplashStatus = SplashStatus.splashDidAdSourceBiddingFilled;
      break;
    case 'splashDidAdSourceBiddingFail':
      tempSplashStatus = SplashStatus.splashDidAdSourceBiddingFail;
      break;
    case 'splashDidAdSourceAttempt':
      tempSplashStatus = SplashStatus.splashDidAdSourceAttempt;
      break;
    case 'splashDidAdSourceLoadFilled':
      tempSplashStatus = SplashStatus.splashDidAdSourceLoadFilled;
      break;
    case 'splashDidAdSourceLoadFail':
      tempSplashStatus = SplashStatus.splashDidAdSourceLoadFail;
      break;

    default:
      tempSplashStatus = SplashStatus.splashUnknown;
  }

  return ATSplashResponse(
      tempSplashStatus,
      tempExtraMap,
      requestMessage,
      placementID,
      isDeeplinkSuccess,
      isTimeout
  );
}