init method
初始化
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;
}