init method

Future<bool> init({
  1. required String baseUrl,
  2. bool debug = false,
  3. RespConfig? respConfig,
  4. int connectTimeout = 15000,
  5. int receiveTimeout = 15000,
  6. Map<String, dynamic>? publicHeaders,
  7. Map<String, dynamic>? publicQueryParams,
  8. CacheConfig? cacheConfig,
  9. List<Interceptor>? interceptors,
})

初始化

Implementation

Future<bool> init(
    {required String baseUrl,
    bool debug = false,
    RespConfig? respConfig,
    int connectTimeout = 15000,
    int receiveTimeout = 15000,
    Map<String, dynamic>? publicHeaders,
    Map<String, dynamic>? publicQueryParams,
    CacheConfig? cacheConfig,
    List<Interceptor>? interceptors}) async {
  _debug = debug;
  _respConfig = respConfig ?? RespConfig();
  publicHeaders?.forEach((key, value) {
    _publicHeaders[key] = value;
  });

  publicQueryParams?.forEach((key, value) {
    _publicQueryParams[key] = value;
  });

  _dio.options = _dio.options.copyWith(
    baseUrl: baseUrl,
    connectTimeout: Duration(milliseconds: connectTimeout),
    receiveTimeout: Duration(milliseconds: receiveTimeout),
    headers: _publicHeaders,
  );

  // 添加请求拦截器
  _dio.interceptors
      .add(RequestInterceptor(_publicHeaders, _publicQueryParams));

  if (debug) {
    // 如果是调试模式,添加日志拦截器
    _dio.interceptors.add(LoggingInterceptor());
  }

  // 添加拦截器
  interceptors?.forEach((interceptor) {
    _dio.interceptors.add(interceptor);
  });

  if (cacheConfig != null) {
    // 如果有缓存配置
    await CacheManager.getInstance().init();
    _dio.interceptors.add(HttpCacheInterceptor(cacheConfig));
  }

  return true;
}