提交 d67a4041 authored 作者: shixiaochen's avatar shixiaochen

1、优化BaseDio(设置代理功能)

上级 f3ec6f92
......@@ -27,7 +27,7 @@ class _ScrollViewPageState extends State<ScrollViewPage> {
ToastUtil.showToast("点击按钮");
},
text: '点击按钮'),
SizedBox(height: 500),
const SizedBox(height: 500),
TextField(focusNode: focusNode2),
],
),
......
import 'package:dio/dio.dart';
import 'package:dio/io.dart';
import 'package:flutter_clx_base/api/base_entity.dart';
import 'package:flutter_clx_base/api/proxy.dart';
import 'package:flutter_clx_base/api/transformer.dart';
import 'package:flutter_clx_base/utils/log_utils.dart';
import 'package:flutter_clx_base/utils/toast_util.dart';
......@@ -31,13 +32,17 @@ abstract class BaseDio {
dio.interceptors.add(getHeadersInterceptor());
dio.interceptors.add(getLogInterceptor());
//配置代理
dio.httpClientAdapter = setProxy();
setProxyUri(dio, isSetProxy());
}
String setBaseUrl();
// 设置请求头拦截器
Interceptor getHeadersInterceptor();
// 是否设置代理
bool isSetProxy() => false;
// 设置log拦截器
Interceptor getLogInterceptor() => _setLogInterceptor();
......@@ -52,7 +57,9 @@ abstract class BaseDio {
void onLoginExpire() => _onLoginExpire();
Future<void> onNetSuccess(Response response, NetSuccessCallback successCallback,
Future<void> onNetSuccess(
Response response,
NetSuccessCallback successCallback,
NetErrorCallback? errorCallback) async =>
await _onNetSuccess(response, successCallback, errorCallback);
......@@ -97,7 +104,7 @@ abstract class BaseDio {
options: _checkOptions(method.value, options),
);
await onNetSuccess(response, successCallback, errorCallback);
} on DioError catch (e) {
} on DioException catch (e) {
if (e.response != null) {
logger.e(
"请求错误:${e.response!.statusCode} ${e.response!.requestOptions.path}");
......@@ -110,7 +117,9 @@ abstract class BaseDio {
}
// 处理网络请求成功逻辑
Future<void> _onNetSuccess(Response response, NetSuccessCallback successCallback,
Future<void> _onNetSuccess(
Response response,
NetSuccessCallback successCallback,
NetErrorCallback? errorCallback) async {
BaseEntity baseEntity = BaseEntity.fromJson(response.data);
if (baseEntity.code == 100 || baseEntity.code == "100") {
......
......@@ -11,14 +11,14 @@ const spSwitchProxy = "switchProxy"; // 开关代理
bool setProxyFlag = false; // 设置代理标识 true 设置 false 不设置
/// dio 设置代理uri
void setProxyUri(Dio? dio, bool isProEnv) {
setProxyFlag = !isProEnv; //生产环境不设置代理
void setProxyUri(Dio? dio, bool isSetProxy) {
setProxyFlag = !isSetProxy; //生产环境不设置代理
if (!setProxyFlag) return;
String? proxyIP = SpUtil.getString(spProxyIp);
String? proxyPort = SpUtil.getString(spProxyPort);
(dio?.httpClientAdapter as IOHttpClientAdapter?)?.onHttpClientCreate =
(HttpClient client) {
(dio?.httpClientAdapter as IOHttpClientAdapter?)?.createHttpClient = () {
HttpClient client = HttpClient();
// 是否设置代理:非生产环境,开启代理后,设置代理
bool isSetProxy = setProxyFlag &&
proxyIP != null &&
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论