gpt4 book ai didi

macos - 如何让在 MacOS 上运行的 Flutter 项目成功使用 Firestore?

转载 作者:行者123 更新时间:2023-12-04 09:24:28 24 4
gpt4 key购买 nike

我有一个简单的 Flutter 项目。它所做的只是连接到 Firestore 集合,提取一些文档并显示它们。这在 iOS 上运行良好。但是,当我尝试在 macOS 中运行它时,我无法检索文档。我没有看到任何异常(exception),只是没有成功。

我对初始默认项目的唯一更改是其中一种构建方法(如下),以及导入 'package:cloud_firestore/cloud_firestore.dart'

我的构建方法:

  @override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: StreamBuilder(
stream: Firestore.instance.collection('mycollection').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return const Text('Loading');
return ListView.builder(
itemExtent: 80,
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) => ListTile(
title: Row(
children: [
Expanded(
child:
Text(snapshot.data.documents[index].data['title']),
)
],
)));
},
),

floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}

从周围阅读来看,Firebase 似乎不完全支持 macOS。也就是说,似乎人们已经能够让它发挥作用——例如,Swift macOS Firebase .我还看到也许我应该使用 FirebaseCore pod 而不是 Firebase/Core pod,如 here 所示.当我尝试手动添加 FirebaseCore pod 时,似乎我仍然有 Firebase/Core pod,而且我不明白 pubspec/pods 足够的机制来把它拉出来。

更多背景:

▶ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, 1.21.0-1.0.pre, on Mac OS X 10.15.5 19F101, locale en-US)
[✗] Android toolchain - develop for Android devices
✗ Unable to locate Android SDK.
Install Android Studio from: https://developer.android.com/studio/index.html
On first launch it will assist you in installing the Android SDK components.
(or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
If the Android SDK has been installed to a custom location, set ANDROID_SDK_ROOT to that location.
You may also want to add it to your PATH environment variable.


[✓] Xcode - develop for iOS and macOS (Xcode 11.6)
[✓] Chrome - develop for the web
[!] Android Studio (not installed)
[✓] VS Code (version 1.47.0)
[✓] Connected device (4 available)

最佳答案

我的应用处于应用沙盒模式,没有适当的授权。我可以通过两种不同的方式解决问题:

  1. com.apple.security.network.client 权利添加到两个权利文件(DebugProfile.entitlementsRelease.entitlements,都在 macos/Runner 下。如果我希望能够在 App Store 中发布我的应用程序,这是首选。

  2. 我可以通过将 com.apple.security.app-sandbox 权限设置为 false 来关闭 App Sandbox 模式,同样是在相同的权限文件中。

无法发出网络请求的问题在我的案例中被掩盖了,因为如果 Firestore 客户端无法到达云端,它会默认使用本地缓存。所以在我的例子中,本地缓存没有数据,我得到了一个空响应而不是错误。

参见 https://flutter.dev/desktop#entitlements-and-the-app-sandbox获取更多信息。

关于macos - 如何让在 MacOS 上运行的 Flutter 项目成功使用 Firestore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63044652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com