Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MacOS上运行Flitter项目以成功使用Firestore?_Macos_Firebase_Flutter_Google Cloud Firestore - Fatal编程技术网

如何在MacOS上运行Flitter项目以成功使用Firestore?

如何在MacOS上运行Flitter项目以成功使用Firestore?,macos,firebase,flutter,google-cloud-firestore,Macos,Firebase,Flutter,Google Cloud Firestore,我有一个简单的颤振项目。它所做的只是连接到Firestore集合,提取一些文档并显示它们。这在iOS上运行良好。但是,当我尝试在macOS中运行它时,我无法检索文档。我没有看到任何例外,只是没有成功 与最初的默认项目相比,我唯一更改的是一种构建方法(如下),并导入“包:cloud\u firestore/cloud\u firestore.dart” 我的构建方法: @override Widget build(BuildContext context) { return Sca

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

与最初的默认项目相比,我唯一更改的是一种构建方法(如下),并导入
“包:cloud\u firestore/cloud\u 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。这就是说,人们似乎已经能够让它工作了——例如。我还看到,也许我应该使用
FirebaseCore
pod,而不是所看到的
Firebase/Core
pod。当我试图手动添加
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)

我的应用程序处于应用程序沙盒模式,没有适当的权限。我可以用两种不同的方法解决这个问题:

  • com.apple.security.network.client
    权限添加到
    macos/Runner
    下的两个权限文件(
    DebugProfile.authorities
    Release.authorities
    )中。如果我想在应用商店中发布我的应用程序,这是首选选项

  • 我可以通过在相同的授权文件中将
    com.apple.security.App Sandbox
    授权设置为false来关闭应用程序沙盒模式

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

    有关更多信息,请参阅。

    我必须添加

        <key>com.apple.security.network.client</key>
        <true/>
        <key>com.apple.security.network.server</key>
        <true/>
    
    com.apple.security.network.client
    com.apple.security.network.server
    
    调试配置文件。从我的MacOS应用程序访问Firestore的权限

    我走了

        <key>com.apple.security.app-sandbox</key>
        <true/>
    
    com.apple.security.app-sandbox
    

    独自一人。

    此屏幕截图取自官方的扑火存储库]()但是我找不到更多的信息了吗?@chihau-谢谢你的评论!我看到了这个链接,但同样找不到我需要的信息。@Chris32-谢谢这个链接!不幸的是,这个链接的标题可能不太好-它是关于在使用mac的同时构建iOS应用程序,而不是构建macos应用程序。