提交 5a8960f8 authored 作者: shixiaochen's avatar shixiaochen

1、修改网络请求设置代理

上级 65ad0aa6
...@@ -44,7 +44,6 @@ class _DioWidgetTestState extends State<DioWidgetTest> { ...@@ -44,7 +44,6 @@ class _DioWidgetTestState extends State<DioWidgetTest> {
); );
}, },
child: const Text('dio请求')), child: const Text('dio请求')),
setProxyWidget(context, dio: DioUtils.instance.dio, isProEnv: false)
], ],
); );
} }
......
...@@ -8,37 +8,40 @@ import 'base_dio.dart'; ...@@ -8,37 +8,40 @@ import 'base_dio.dart';
const spProxyIp = "proxyIP"; // ip const spProxyIp = "proxyIP"; // ip
const spProxyPort = "proxyPort"; // port const spProxyPort = "proxyPort"; // port
const spSwitchProxy = "switchProxy"; // 开关代理 const spSwitchProxy = "switchProxy"; // 开关代理
bool setProxyFlag = false; // 设置代理标识 true 设置 false 不设置
/// dio 设置代理uri /// dio 设置代理uri
void setProxyUri(Dio? dio, bool isProEnv) { void setProxyUri(Dio? dio, bool isProEnv) {
setProxyFlag = isProEnv;
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?)?.onHttpClientCreate =
(HttpClient client) { (HttpClient client) {
// 是否设置代理:非生产环境,开启代理后,设置代理 // 是否设置代理:非生产环境,开启代理后,设置代理
bool isSetProxy = !isProEnv && bool isSetProxy = setProxyFlag &&
proxyIP != null && proxyIP != null &&
proxyIP.isNotEmpty && proxyIP.isNotEmpty &&
proxyPort != null && proxyPort != null &&
proxyPort.isNotEmpty && proxyPort.isNotEmpty &&
SpUtil.getBool(spSwitchProxy) == true; SpUtil.getBool(spSwitchProxy) == true;
client.findProxy = if (isSetProxy) {
(uri) => isSetProxy ? "PROXY $proxyIP:$proxyPort" : "DIRECT"; client.findProxy = (uri) => "PROXY $proxyIP:$proxyPort";
client.badCertificateCallback = client.badCertificateCallback =
(X509Certificate cert, String host, int port) => true; (X509Certificate cert, String host, int port) => true;
}
return client; return client;
}; };
} }
/// 设置代理widget /// 设置代理widget
/// isProEnv 是否是生产环境,生产环境禁止抓包 /// isProEnv 是否是生产环境,生产环境禁止抓包
setProxyWidget(context, {required Dio? dio, required bool isProEnv}) { setProxyWidget(context) {
logger.d("===== isProEnv = $isProEnv"); return (!setProxyFlag)
return (isProEnv)
? Container() ? Container()
: InkWell( : InkWell(
onTap: () => setProxyDialog(context, dio, isProEnv), onTap: () => setProxyDialog(context),
child: Container( child: Container(
height: 50.0, height: 50.0,
padding: const EdgeInsets.only(left: 15.0, right: 15.0), padding: const EdgeInsets.only(left: 15.0, right: 15.0),
...@@ -60,7 +63,7 @@ var ipController = TextEditingController(); ...@@ -60,7 +63,7 @@ var ipController = TextEditingController();
var portController = TextEditingController(); var portController = TextEditingController();
/// 设置代理dialog /// 设置代理dialog
setProxyDialog(context, dio, isProEnv) { setProxyDialog(context) {
ipController.text = SpUtil.getString(spProxyIp) ?? ""; ipController.text = SpUtil.getString(spProxyIp) ?? "";
portController.text = SpUtil.getString(spProxyPort) ?? ""; portController.text = SpUtil.getString(spProxyPort) ?? "";
showDialog( showDialog(
...@@ -100,7 +103,7 @@ setProxyDialog(context, dio, isProEnv) { ...@@ -100,7 +103,7 @@ setProxyDialog(context, dio, isProEnv) {
spProxyIp, ipController.value.text.toString().trim()); spProxyIp, ipController.value.text.toString().trim());
SpUtil.putString( SpUtil.putString(
spProxyPort, portController.value.text.toString().trim()); spProxyPort, portController.value.text.toString().trim());
setProxyUri(dio, isProEnv); exit(0);
}, },
child: Container( child: Container(
margin: const EdgeInsets.only( margin: const EdgeInsets.only(
......
...@@ -8,6 +8,7 @@ export 'package:getwidget/getwidget.dart'; ...@@ -8,6 +8,7 @@ export 'package:getwidget/getwidget.dart';
export 'package:package_info_plus/package_info_plus.dart'; export 'package:package_info_plus/package_info_plus.dart';
export 'package:sp_util/sp_util.dart'; export 'package:sp_util/sp_util.dart';
export 'api/proxy.dart';
export 'common/extension.dart'; export 'common/extension.dart';
export 'common/gaps.dart'; export 'common/gaps.dart';
export 'utils/common_utils.dart'; export 'utils/common_utils.dart';
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论