Flutter Web - 获取 Firestore 集合

Posted

技术标签:

【中文标题】Flutter Web - 获取 Firestore 集合【英文标题】:Flutter Web - Fetching Firestore collection 【发布时间】:2021-03-04 12:43:09 【问题描述】:

我有一个运行良好的 Flutter 移动应用程序,但是当尝试将相同的代码迁移到 Flutter Web 时,我无法使用 .就像 StreamBuilder 不想在 web 模式下工作,但只能在移动应用程序模式下工作。

在 dart 文件的顶部,我已经导入:

'package:cloud_firestore/cloud_firestore.dart'
'package:firebase_auth/firebase_auth.dart'

和下面的代码,是显示streambuilder和listview的sn-p。在 web 模式下,代码卡在if (!snapshot.hasData) 条件下,仅将文本“正在加载...”返回到我的 Chrome 浏览器。在移动应用程序中,它按预期工作并返回一个列表视图,其中包含来自 firestore 的所有数据。

Container(
height: safeBlockVertical * 0.9,
child: StreamBuilder(
                              
  stream: FirebaseFirestore.instance.collection(orgName).snapshots(),
  builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) 
                                
    if (!snapshot.hasData) return new Text('Loading...'); else 
                                
      return ListView(
        children: snapshot.data.docs.map(
        (DocumentSnapshot document) 
             .
             .
             .
             child: ListTile(
               title: ....
               trailing: ....
               onTap: () 

最初我认为 index.html 中的 firebase 配置可能是错误的,并且经常摆弄它。但后来意识到情况并非如此,因为我能够从firestore成功登录并获取用户信息而没有任何错误。所以firebase配置好,现在我想知道上面的StreamBuilder可能在Flutter Web上不起作用。是这样吗?有什么帮助吗?

【问题讨论】:

【参考方案1】:

在 Flutter 中 Firebase 的移动和网络使用有几点不同,但没有明确的文档。

第一个问题是在 html 中导入 firebase 脚本作为 firebase 在创建 Web 应用程序时推荐的默认版本似乎不起作用。 这是我用过的版本,它确实有效。

<script src="https://www.gstatic.com/firebasejs/7.14.4/firebase-app.js</script> 
<script src="https://www.gstatic.com/firebasejs/7.14.4/firebase-firestore.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.14.4/firebase-storage.js"></script>

其次,您可以在 pubspec.yaml 文件中使用的包有点不同。这是我使用和工作的:

  firebase_web: ^5.0.9

它包括存储和 Firestore 功能。可能存在一些语法差异,但您可以通过一些搜索了解它们。

祝你编码好运!

【讨论】:

降低'firebase-firestore.js' 的版本号解决了这个问题: 您能详细说明一下吗?我面临着同样的困难。如果您能提供更多详细信息,我将不胜感激。 我在 7.14.x 之后尝试的每个版本都有问题。

以上是关于Flutter Web - 获取 Firestore 集合的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Web - 获取 Firestore 集合

Flutter web无法从firestore获取数据

获取Flutter Web上传文件的路径

Flutter Web:获取设备信息UA窗口大小等

Flutter Web:获取设备信息UA窗口大小等

Flutter web:获取全屏大小 - 不是窗口大小