initNet method
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,
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);
}