flutter如何设置代理

在Flutter开发中,如何为应用设置代理?我在使用一些需要代理才能访问的API时遇到问题,希望了解在Android和iOS平台上分别如何配置代理。另外,是否可以通过代码动态设置代理,而不是每次都修改系统代理设置?如果有相关的代码示例就更好了。

2 回复

在Flutter中设置代理,可在android/app/src/main/AndroidManifest.xml中添加网络权限,然后在pubspec.yaml中配置代理,或通过命令行设置环境变量HTTP_PROXYHTTPS_PROXY

更多关于flutter如何设置代理的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中设置代理可以通过以下几种方式:

1. 开发环境设置

Android Studio/IntelliJ IDEA

在运行配置中添加环境变量:

--dart-define=HTTP_PROXY=http://127.0.0.1:7890
--dart-define=HTTPS_PROXY=http://127.0.0.1:7890

命令行运行

flutter run --dart-define=HTTP_PROXY=http://127.0.0.1:7890 --dart-define=HTTPS_PROXY=http://127.0.0.1:7890

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

对于Dio网络库

import 'package:dio/dio.dart';

void setupProxy() {
  final dio = Dio();
  (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = 
      (HttpClient client) {
    client.findProxy = (uri) {
      return "PROXY 127.0.0.1:7890";
    };
    client.badCertificateCallback = 
        (X509Certificate cert, String host, int port) => true;
  };
}

对于http包

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

void setupHttpProxy() {
  http.Client client = http.Client();
  // 需要在请求时手动设置代理
}

3. 系统级别设置(Android)

android/app/src/main/AndroidManifest.xml 中添加网络权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

4. 注意事项

  • 127.0.0.1:7890 替换为你的实际代理地址
  • 开发环境设置主要影响包下载和开发工具
  • 代码中设置影响应用运行时的网络请求
  • 生产环境建议通过配置方式管理代理设置

选择适合你需求的方式进行配置即可。

回到顶部