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

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

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