国内常用的代理服务器 flutter如何配置

“在国内开发Flutter应用时,如何正确配置代理服务器?我在使用flutter pub get时经常因网络问题失败,尝试过在环境变量设置HTTP_PROXY和HTTPS_PROXY,但偶尔还是不生效。请问有没有稳定的代理配置方案?是否需要修改Flutter SDK本身的网络设置?希望了解具体步骤和注意事项。”

2 回复

在Flutter中配置代理,可在android/app/src/main/AndroidManifest.xml中添加网络权限,并在pubspec.yaml中设置代理环境变量,如http_proxyhttps_proxy。也可通过代码使用dio库配置代理。

更多关于国内常用的代理服务器 flutter如何配置的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中配置代理服务器,主要用于开发调试(如抓包)或处理网络请求。以下是常见方法和示例:

1. 开发环境配置(抓包工具如Charles/Fiddler)

android/app/src/main/AndroidManifest.xml<application> 标签内添加网络配置:

<application
    android:usesCleartextTraffic="true"
    ...>
    <!-- 允许HTTP明文流量 -->
</application>

启动时设置代理(适用于模拟器/真机调试):

# 启动模拟器时指定代理
emulator -avd <模拟器名称> -http-proxy http://<代理IP>:<端口>

# 或通过环境变量(部分库支持)
export HTTP_PROXY=http://127.0.0.1:8888
export HTTPS_PROXY=http://127.0.0.1:8888

2. 代码中配置网络请求代理

使用 httpdio 库时,可通过 BaseOptions 配置代理:

Dio示例:

import 'package:dio/dio.dart';

void setupProxy() {
  final dio = Dio();
  (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (client) {
    client.findProxy = (uri) {
      return "PROXY 192.168.1.100:8888;"; // 替换为你的代理地址
    };
    // 忽略证书错误(仅调试用)
    client.badCertificateCallback = (cert, host, port) => true;
  };
}

http库示例:

import 'package:http/http.dart' as http;

void requestWithProxy() async {
  final client = http.Client();
  final response = await client.get(
    Uri.parse('https://example.com'),
    headers: {'Proxy-Authorization': 'Basic ${base64Encode(utf8.encode('用户名:密码'))}'},
  );
}

3. 注意事项

  • 生产环境:不建议硬编码代理配置,应通过配置文件或环境变量动态设置。
  • 安全性:代理服务器可能拦截敏感数据,请确保使用可信代理。
  • 平台差异:Android和iOS的代理设置方式可能不同,需分别测试。

常用代理工具地址

  • Charles/Fiddler默认地址:127.0.0.1:8888
  • 企业代理示例:10.0.0.1:8080(需替换为实际地址)

根据实际需求选择合适的方式,开发阶段推荐使用抓包工具配置,生产环境建议通过服务器端解决网络限制问题。

回到顶部