init method

void init({
  1. String baseUrl = "",
  2. Duration? connectTimeout,
  3. Duration? receiveTimeout,
  4. Duration? sendTimeout,
  5. String? pem,
  6. String? pKCSPath,
  7. String? pKCSPwd,
  8. String codeKey = 'code',
  9. String msgKey = 'msg',
  10. String dataKey = 'data',
  11. String successCode = '',
  12. bool checkDataEmpty = true,
  13. ResponseType? responseType,
  14. bool openLog = true,
  15. int retry = 3,
  16. String? method,
  17. Map<String, dynamic>? headers,
  18. Map<String, dynamic>? extra,
  19. String contentType = '',
  20. ValidateStatus? validateStatus,
  21. bool? followRedirects,
  22. dynamic onError(
    1. HttpData httpData
    )?,
  23. dynamic onFinish(
    1. HttpData httpData
    )?,
  24. dynamic onStart(
    1. String loadingMsg
    )?,
  25. dynamic onSuccess(
    1. HttpData httpData,
    2. String successMsg
    )?,
  26. bool enableAutoCookie = false,
  27. ListFormat? listFormat,
  28. List<String>? publicErrorCode,
  29. List<Interceptor>? interceptors,
  30. CacheOptions? cacheOptions,
  31. Map<String, dynamic> fixParamsBuilder()?,
  32. Map<String, dynamic> fixHeadersBuilder()?,
  33. String fixUrlParams()?,
  34. Dio? dio,
  35. bool checkUrl = true,
  36. TalkerDioLoggerSettings? talkerDioLoggerSettings,
})

初始化公共属性

baseUrl 地址前缀 connectTimeout 连接超时时间,毫秒 receiveTimeout 接收超时时间,毫秒 interceptors 基础拦截器

Implementation

void init({
  String baseUrl = "",
  Duration? connectTimeout,
  Duration? receiveTimeout,
  Duration? sendTimeout,
  String? pem,
  String? pKCSPath,
  String? pKCSPwd,
  String codeKey = 'code',
  String msgKey = 'msg',
  String dataKey = 'data',
  String successCode = '',
  bool checkDataEmpty = true,
  ResponseType? responseType,
  bool openLog = true,
  int retry = 3,
  String? method,
  Map<String, dynamic>? headers,
  Map<String, dynamic>? extra,
  String contentType = '',
  ValidateStatus? validateStatus,
  bool? followRedirects,
  Function(HttpData httpData)? onError,
  Function(HttpData httpData)? onFinish,
  Function(String loadingMsg)? onStart,
  Function(HttpData httpData, String successMsg)? onSuccess,
  bool enableAutoCookie = false,
  ListFormat? listFormat,
  List<String>? publicErrorCode,
  List<Interceptor>? interceptors,
  CacheOptions? cacheOptions,
  Map<String, dynamic> Function()? fixParamsBuilder,
  Map<String, dynamic> Function()? fixHeadersBuilder,
  String Function()? fixUrlParams,
  Dio? dio,
  bool checkUrl = true,
  TalkerDioLoggerSettings? talkerDioLoggerSettings,
}) {
  _onStart = onStart;
  _onError = onError;
  _onFinish = onFinish;
  _onSuccess = onSuccess;
  _successCode = successCode;
  _codeKey = codeKey;
  _msgKey = msgKey;
  _dataKey = dataKey;
  _checkDataEmpty = checkDataEmpty;
  _cacheOptions = cacheOptions;
  _interceptors = interceptors;
  this.openLog = openLog;
  this.retry = retry;
  this.pKCSPath = pKCSPath;
  _checkUrl = checkUrl;

  Map<String, dynamic> lastHeaders = {};

  _isInit = true;

  method = method ?? Method.post;

  if (publicErrorCode != null) {
    this.publicErrorCode.addAll(publicErrorCode);
  }

  if (fixParamsBuilder != null) {
    _fixParamsBuilder = fixParamsBuilder;
  }

  if (fixHeadersBuilder != null) {
    _fixHeadersBuilder = fixHeadersBuilder;
  }

  if (fixUrlParams != null) {
    _fixUrlParams = fixUrlParams;
  }

  lastHeaders.addAll(_fixHeaders);
  lastHeaders.addAll(headers ?? {});

  connectTimeout = connectTimeout ?? const Duration(seconds: 30);
  sendTimeout = sendTimeout ?? const Duration(seconds: 30);
  receiveTimeout = receiveTimeout ?? const Duration(seconds: 30);

  _talkerDioLoggerSettings =
      talkerDioLoggerSettings ?? const TalkerDioLoggerSettings();

  ///如果外部没有传入dio,使用自身dio
  if (dio == null) {
    _baseOptions = BaseOptions(
        baseUrl: baseUrl,
        receiveTimeout: receiveTimeout,
        connectTimeout: connectTimeout,
        sendTimeout: sendTimeout,
        contentType: contentType,
        responseType: responseType ?? ResponseType.json,
        headers: lastHeaders,
        extra: extra ?? {},
        validateStatus: validateStatus,
        followRedirects: followRedirects,
        listFormat: listFormat,
        method: method);
    _dio = createDio();
  } else {
    _baseOptions = dio.options;
    _dio = dio;
  }
}