Flutter开发MacOS时无法发送请求如何解决

在Flutter开发MacOS应用时遇到网络请求无法发送的问题,具体表现为:使用http或dio库发送请求时始终失败,错误提示为连接超时或无法建立连接。已在iOS/Android端测试相同代码可正常请求,但MacOS端无效。已尝试以下方法均未解决:

  1. 检查网络权限配置(已添加com.apple.security.network.client
  2. 关闭防火墙和代理
  3. 切换WiFi和热点网络
  4. 使用原生URLSession测试可成功
    请问MacOS端是否需要额外配置?或是否是Flutter桌面端已知限制?
2 回复

检查网络权限:在macOS的Info.plist中添加NSAppTransportSecurity字典,允许HTTP请求。
使用http包时,确保URL正确,并处理CORS问题。
若使用localhost,尝试改用127.0.0.1
检查防火墙或代理设置。

更多关于Flutter开发MacOS时无法发送请求如何解决的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter开发macOS应用时无法发送网络请求,通常是由于macOS的网络安全限制导致的。以下是几种解决方案:

1. 启用网络客户端权限(最常见)

macos/Runner/DebugProfile.entitlementsmacos/Runner/Release.entitlements 文件中添加:

<key>com.apple.security.network.client</key>
<true/>

2. 配置ATS(App Transport Security)

macos/Runner/Info.plist 中添加:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

3. 检查网络权限配置

确保在 macos/Runner/Base.lproj/MainMenu.xib 中网络权限已正确配置。

4. 代码示例

使用 http 包发送请求:

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

Future<void> fetchData() async {
  try {
    final response = await http.get(Uri.parse('https://api.example.com/data'));
    if (response.statusCode == 200) {
      print('请求成功: ${response.body}');
    } else {
      print('请求失败: ${response.statusCode}');
    }
  } catch (e) {
    print('网络错误: $e');
  }
}

5. 添加依赖

pubspec.yaml 中添加:

dependencies:
  http: ^1.1.0

解决步骤:

  1. 修改 entitlement 文件
  2. 配置 Info.plist
  3. 清理并重新构建项目
  4. 重启应用

这些修改后,通常可以解决macOS平台的网络请求问题。

回到顶部