16

我开始将我的 Flutter 应用程序移植到macos Desktop。用户界面开始很好。但是,一旦应用程序进行网络调用,它就会立即失败,并显示Connection failed (OS Error: Operation not allowed)

运行单线:

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 (Channel master, v1.9.8-pre.108)

4

3 回答 3

27

根据我对其他答案的评论,您不应为此使用 Xcode 功能 UI。它不会正确处理 Flutter 项目中的两个单独的权利文件。

您需要添加:

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

macos/Runner/DebugProfile.entitlementsmacos/Runner/Release.entitlements

在此处记录。

于 2020-04-14T05:16:15.443 回答
24

您的 macOS XCode 项目缺少称为“传出连接(客户端)”的Internet 权限。

打开你的 macos xcode 项目 - [root]/macos/Runner.xcworkspace

单击项目导航器中的“Runner” - 将显示常规设置。从选项卡栏中选择“功能”并勾选选项“传出连接(客户端)”

在此处输入图像描述

在 XCode 中重建您的应用程序并启动项目。

于 2019-09-08T12:15:01.307 回答
2

如果您仅在 Android 版本中收到此错误,则Internet必须从main manifest. 您只需要在文件中添加Internet权限。Manifest

只需在清单中添加此权限<uses-permission android:name="android.permission.INTERNET"/>

Android 文件夹中有三个可用的清单文件

app/src/debug
app/src/main
app/src/profile
于 2021-01-20T06:45:23.353 回答