我开始将Flutter应用程序移植到 macos Desktop 。用户界面开始正常。但是,一旦该应用进行网络通话,它会立即失败并显示连接失败(操作系统错误:不允许操作)。
运行单线:
final response = await http.get('https://jsonplaceholder.typicode.com/posts/1');
失败:
Unhandled Exception: SocketException: Connection failed (OS Error:
Operation not permitted, errno = 1),
address = jsonplaceholder.typicode.com, port = 443
#0 IOClient.send (package:http/src/io_client.dart:33:23)
macos构建目标来自Google的示例here。
Flutter(频道主版,v1.9.8-pre.108)
答案 0 :(得分:11)
根据我对其他答案的评论,您应该不为此使用Xcode功能UI。它无法正确处理Flutter项目中的两个单独的权利文件。
您需要添加:
<key>com.apple.security.network.client</key>
<true/>
到macos/Runner/DebugProfile.entitlements
和macos/Runner/Release.entitlements
。
已记录在here中。
答案 1 :(得分:6)
您的macOS XCode项目缺少Internet权限,称为“传出连接(客户端)”。
打开您的macOS Xcode项目-[root] /macos/Runner.xcworkspace
在项目导航器中单击“运行器”-将显示常规设置。从标签栏中选择“功能”,然后勾选选项“外向连接(客户端)” 。
在XCode中重建应用程序并启动项目。
答案 2 :(得分:2)
如果您仅在 Android 版本中收到此错误,则 Internet
main
中必须缺少 manifest
权限。您只需要在 Internet
文件中添加 Manifest
权限。
只需在清单 <uses-permission android:name="android.permission.INTERNET"/>
Android 文件夹中有三个可用的清单文件
app/src/debug
app/src/main
app/src/profile