Flutter开发MacOS时无法发送请求如何解决
在Flutter开发MacOS应用时遇到网络请求无法发送的问题,具体表现为:使用http或dio库发送请求时始终失败,错误提示为连接超时或无法建立连接。已在iOS/Android端测试相同代码可正常请求,但MacOS端无效。已尝试以下方法均未解决:
- 检查网络权限配置(已添加
com.apple.security.network.client) - 关闭防火墙和代理
- 切换WiFi和热点网络
- 使用原生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.entitlements 和 macos/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
解决步骤:
- 修改 entitlement 文件
- 配置 Info.plist
- 清理并重新构建项目
- 重启应用
这些修改后,通常可以解决macOS平台的网络请求问题。

