flutter如何设置proxy
在Flutter开发中,如何为应用设置代理?我在调试时需要让应用走指定的代理服务器,但不知道该如何配置。是在AndroidManifest.xml中设置,还是通过Dart代码实现?如果是网络请求相关的代理,该如何针对Dio或http库进行配置?希望能给出具体的实现方法和示例代码。
2 回复
在Flutter中设置代理,需在android/app/src/main/AndroidManifest.xml的<application>标签内添加:
<application
android:networkSecurityConfig="@xml/network_security_config"
...>
并创建android/app/src/main/res/xml/network_security_config.xml文件,配置代理服务器地址和端口。
更多关于flutter如何设置proxy的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在 Flutter 中设置代理可以通过以下几种方式实现:
1. 使用系统代理(推荐)
Flutter 默认会遵循系统的代理设置,无需额外配置。确保你的系统已正确配置代理即可。
2. 在代码中设置代理
通过重写 HttpOverrides.global 来为所有 HTTP 请求设置代理:
import 'dart:io';
void main() {
HttpOverrides.global = MyHttpOverrides();
runApp(MyApp());
}
class MyHttpOverrides extends HttpOverrides {
@override
HttpClient createHttpClient(SecurityContext? context) {
return super.createHttpClient(context)
..findProxy = (uri) {
return "PROXY 192.168.1.100:8888;"; // 替换为你的代理地址
}
..badCertificateCallback =
(X509Certificate cert, String host, int port) => true; // 忽略证书验证(可选)
}
}
3. 通过环境变量设置
在运行 Flutter 命令时设置环境变量:
export http_proxy=http://192.168.1.100:8888
export https_proxy=http://192.168.1.100:8888
flutter run
4. Android 单独配置
在 android/app/src/main/AndroidManifest.xml 中添加网络权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
注意事项
- 代理地址格式:
PROXY host:port - 生产环境建议移除证书忽略回调
- iOS 可能需要额外配置 ATS
选择最适合你开发场景的方法进行配置即可。

