Flutter-macos构建目标上的http.get失败:连接失败

时间:2019-09-08 12:15:01

标签: http flutter permissions flutter-desktop

我开始将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)

3 个答案:

答案 0 :(得分:11)

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

您需要添加:

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

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

已记录在here中。

答案 1 :(得分:6)

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

打开您的macOS Xcode项目-[root] /macos/Runner.xcworkspace

在项目导航器中单击“运行器”-将显示常规设置。从标签栏中选择“功能”,然后勾选选项“外向连接(客户端)”

enter image description here

在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