flutter如何配置代理

在Flutter开发中,如何正确配置代理?我在使用Android Studio运行项目时需要访问外网资源,但遇到网络连接问题。请问应该在哪里设置代理?是修改gradle.properties文件还是通过Flutter命令参数配置?能否提供具体的代理配置示例?

2 回复

在Flutter项目中配置代理,需在android/app/src/main/AndroidManifest.xml中添加网络权限,并在android/app/src/main/res/xml/network_security_config.xml中设置代理地址。也可通过代码使用dart:io中的HttpClient手动配置代理。

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


在Flutter中配置代理可以通过以下两种方式实现:

1. 在Flutter项目中配置(推荐)

android/app/src/main/AndroidManifest.xml 文件中添加网络权限和代理配置:

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

<application
    android:usesCleartextTraffic="true"
    android:networkSecurityConfig="@xml/network_security_config">
</application>

创建 android/app/src/main/res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

2. 在Dart代码中配置

使用 http 包时配置代理:

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

void fetchData() async {
  final proxyUrl = 'http://your-proxy-server:port';
  
  final client = http.Client();
  final response = await client.get(
    Uri.parse('https://api.example.com/data'),
    headers: {
      'Proxy-Authorization': 'Basic ${base64Encode(utf8.encode('username:password'))}',
    },
  );
}

3. 开发环境配置

在命令行中设置环境变量:

# Windows
set HTTP_PROXY=http://proxy-server:port
set HTTPS_PROXY=http://proxy-server:port

# macOS/Linux
export HTTP_PROXY=http://proxy-server:port
export HTTPS_PROXY=http://proxy-server:port

注意事项:

  • 替换 your-proxy-server:port 为实际的代理服务器地址和端口
  • 如果需要认证,添加用户名和密码
  • 在正式发布时移除不必要的网络配置

推荐使用第一种方式,因为它更安全且能更好地管理网络配置。

回到顶部