onInit method
Called immediately after the widget is allocated in memory. You might use this to initialize something for the controller.
Implementation
@override
void onInit() {
super.onInit();
// BaseOptions、Options、RequestOptions 都可以配置参数,优先级别依次递增,且可以根据优先级别覆盖参数
BaseOptions options = BaseOptions(
connectTimeout: connectTimeout ?? CONNECT_TIMEOUT,
// 响应流上前后两次接受到数据的间隔,单位为毫秒。
receiveTimeout: receiveTimeout ?? RECEIVE_TIMEOUT,
contentType: 'application/json; charset=utf-8',
responseType: ResponseType.json,
headers: {});
dio = Dio(options);
dio.interceptors.add(MaskInterceptor());
dio.interceptors.add(ErrorInterceptor());
if (interceptors != null && interceptors!.isNotEmpty) {
dio.interceptors.addAll(interceptors!);
}
// 添加拦截器
dio.interceptors.add(LogInterceptor(responseBody: true));
// 加内存缓存
// dio.interceptors.add(NetCacheInterceptor());
if (retryEnable) {
dio.interceptors.add(
RetryOnConnectionChangeInterceptor(
requestRetrier: DioConnectivityRequestRetrier(
dio: dio,
connectivity: Connectivity(),
),
),
);
}
// 在调试模式下需要抓包调试,所以我们使用代理,并禁用HTTPS证书校验
if (proxyConfig?[proxyEnable] ?? false) {
(dio.httpClientAdapter as IOHttpClientAdapter).onHttpClientCreate =
(client) {
client.findProxy = (uri) {
return "PROXY ${proxyConfig?[proxyIp]}:${proxyConfig?[proxyPort]}";
};
//代理工具会提供一个抓包的自签名证书,会通不过证书校验,所以我们禁用证书校验
client.badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
};
}
}