initNet method

Future<void> initNet({
  1. required String baseUrl,
  2. NetworkAdapter? adapter,
  3. Directory? cacheDir,
  4. String cacheName = 'app_local_data',
  5. CacheMode baseCacheMode = CacheMode.ONLY_REQUEST,
  6. List<AdapterInterceptor>? interceptors,
  7. BaseOptions? baseOptions,
  8. bool systemLog = false,
  9. bool isDebug = kDebugMode,
  10. CheckNetWork? baseCheckNet,
  11. List<String>? ignoreCacheKeys,
  12. HiveCipher? encryptionCipher,
  13. Map<String, dynamic>? baseUrlEnv,
  14. int cacheInvalidationTime = 365 * 24 * 60 * 60 * 1000,
  15. double debugWindowWidth = 800,
  16. double debugWindowHeight = 600,
})

Implementation

Future<void> initNet({
  required String baseUrl,
  NetworkAdapter? adapter,
  Directory? cacheDir,
  String cacheName = 'app_local_data',
  CacheMode baseCacheMode = CacheMode.ONLY_REQUEST,
  List<AdapterInterceptor>? interceptors,
  BaseOptions? baseOptions,
  bool systemLog = false,
  bool isDebug = kDebugMode,
  CheckNetWork? baseCheckNet,
  List<String>? ignoreCacheKeys,
  HiveCipher? encryptionCipher,
  Map<String, dynamic>? baseUrlEnv,
  int cacheInvalidationTime = 365 * 24 * 60 * 60 * 1000,
  double debugWindowWidth = 800,
  double debugWindowHeight = 600
}) async {
  LogUtil.init(systemLog: systemLog,debug: isDebug);

  // 存储 baseUrl
  this._baseUrl = baseUrl;
  this._baseCheckNet = baseCheckNet;
  this._baseCacheMode = baseCacheMode;
  this._cacheInvalidationTime = cacheInvalidationTime;
  this._baseIgnoreCacheKeys = ignoreCacheKeys;
  debugWindow = ValueNotifier(Size(debugWindowWidth, debugWindowHeight));

  // 如果提供了自定义适配器,使用它;否则使用默认的 DioAdapter
  if (adapter != null) {
    _adapter = adapter;
  } else {
    // 确保使用 DioAdapter
    if (_adapter is! DioAdapter) {
      final options = baseOptions ?? BaseOptions(
        contentType: Headers.jsonContentType,
      );
      _adapter = DioAdapter(dio: Dio(options));
    }
  }

  // 如果是 DioAdapter,配置 Dio 选项
  if (_adapter is DioAdapter) {
    final dioAdapter = _adapter as DioAdapter;

    if (baseOptions != null) {
      dioAdapter.dio.options = baseOptions;
    }

    dioAdapter.dio.options.baseUrl = baseUrl;
  }

  // 添加适配器拦截器(适用于所有适配器)
  if (interceptors != null && interceptors.isNotEmpty) {
    for (var interceptor in interceptors) {
      _adapter?.addInterceptor(interceptor);
    }
  }

  if (baseUrlEnv != null && baseUrlEnv.isNotEmpty) {
    _baseUrlEnv.addAll(baseUrlEnv);
  }

  if (RxNetPlatform.isWeb) {
    this._baseCacheMode = CacheMode.ONLY_REQUEST;
    LogUtil.v("RxNet does not support caching environments: web");
    LogUtil.v("RxNet 不支持缓存的环境:web");
    return;
  }
  await cacheManager.init(cacheDir, cacheName, encryptionCipher);
}