netFetch method

dynamic netFetch(
  1. dynamic url,
  2. dynamic params,
  3. Map<String, dynamic>? header,
  4. Options? option, {
  5. dynamic noTip = true,
  6. Map<String, dynamic>? queryParameters,
})

发起网络请求 url 请求url params 请求参数 header 外加头 option 配置

Implementation

netFetch(url, params, Map<String, dynamic>? header, Options? option,
    {noTip = true, Map<String, dynamic>? queryParameters}) async {
  Map<String, dynamic> headers = HashMap();
  if (!Address.serverGui) {
    headers['appinfo'] =
        Address.packageName + '#' + AppInfoUtils.instance.packageInfo.version;
  }
  headers['lan'] = await BaseDao.getLocale();
  headers['Accept-Language'] = Address.language;
  if (Address.packageName != 'Anchor') {
    try {
      String? carrierInfo = await MmooCarrierInfo.mobileCountryCode;
      if (carrierInfo?.contains('460') == true) {
        headers['cardtype'] = '460';
      } else if (carrierInfo?.isEmpty != false || carrierInfo == 'nil') {
        headers['cardtype'] = '-1';
      }
    } catch (e) {
      AppConfig.printLog(e);
      headers['cardtype'] = '-1';
    }
  }
  if (header != null) {
    headers.addAll(header);
  }
  if (option != null) {
    option.headers = headers;
  } else {
    option = Options(method: 'get');
    option.headers = headers;
  }

  resultError(DioError e) {
    Response? errorResponse;
    if (e.response != null) {
      errorResponse = e.response;
    } else {
      errorResponse =
          Response(statusCode: 666, requestOptions: e.requestOptions);
    }
    if (e.type == DioErrorType.connectTimeout ||
        e.type == DioErrorType.receiveTimeout) {
      errorResponse!.statusCode = Code.networkTimeout;
    }
    return ResultData(e.message, false, errorResponse!.statusCode);
  }

  Response response;
  try {
    if (option.method != 'post') {
      response = await _dio.request(url,
          queryParameters: queryParameters, options: option);
    } else {
      response = await _dio.request(url, data: params, options: option);
    }
  } on DioError catch (e) {
    return resultError(e);
  }
  if (response.data is DioError) return resultError(response.data);
  return response.data;
}