问题标签 [stream-builder]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
618 浏览

listview - 使用 StreamBuilder 和从 Firebase Firestore 数据库查询时,ListView 不会更新/获取数据

我正在尝试从特定集合用户中检索数据,如下面的代码所示,但是当我查询此集合中的用户时,列表视图不显示。换句话说,它只显示一个 CircularProgressIndicator() 表示没有数据可以找到。在我注释掉 where 查询的那一刻,listview 完美呈现。

我尝试将 Nested StreamBuilders 和 FutureBuilder 与 Streambuilder 结合使用,但这些解决方案都不起作用。对于这样一个关键特性,必须有一个简单的解决方案。

请告诉我如何同时查询和使用 StreamBuilder。

0 投票
1 回答
669 浏览

firebase - Flutter/Firestore:如何在滚动时将项目添加到流中(完成获取时保留滚动位置)?

我有一个聊天 ( ListView),其中包含我只想根据需要加载的消息。

因此,最初加载聊天时,我想加载最后 n 条消息,而当用户向上滚动时,我也想获取较旧的消息。

每当有新消息到达 firebase 集合时,都应将其添加到ListView. 我通过使用StreamBuilder获取最后 n 条消息流的 a 来实现这一点,其中 n 是存储在状态中的变量,我可以增加它以加载更多消息(它是获取最后 n 条消息流的函数的参数) .

但是对于我当前的实现,问题是即使在我向上滚动时获取更多消息并将其添加到列表视图中,它也会立即跳回底部(因为列表视图已重建并且未保留滚动位置)。我怎样才能防止这种情况发生?

0 投票
2 回答
833 浏览

arrays - StreamBuilder arrayContains 和 RangeError(index):无效值:有效值范围为空:0

慢慢掌握 Flutter 和 Dart 作为我的新爱好。您可以提供的任何建议或帮助将不胜感激!我正在尝试实现一个简单的朋友系统,您可以在其中搜索另一个用户并将他们添加为朋友。

预期的结果是:

  1. 登录用户转到朋友的个人资料并单击“添加朋友”按钮。
  2. Firestore 有一个 users 集合。在该集合中是包含个人资料信息的每个用户的文档,包括数组“朋友”。单击“添加朋友”按钮会将登录的用户 UID 添加到第二个人的“朋友”数组中。
  3. 然后在好友屏幕上,我使用 StreamBuilder 和 Listview.builder 将所有用户显示为卡片,这些用户的“好友”数组中有登录用户的 UID。

为此,我想使用.where('friends', arrayContains: 'user.uid'),仅在屏幕列表中显示这些用户卡。

这是我写的代码:

但是,当我运行我的应用程序时,它显示错误:

笔记:

  1. itemCount 现在被硬编码为 1。我只希望在测试时返回 1 个用户。一旦一切正常,我将在 Firestore 中填充更多用户。
  2. 当我将 arrayContains 换成 .where ('displayName', isEqualTo: 'My Name').snapshots(),之类的更简单的东西时,应用程序可以正常工作
  3. user.uid 已经过测试并且确实包含预期的字符串
  4. 数组在 Firestore 中存在值(请参阅帖子底部的链接)
  5. 我已经为我在“用户”中使用的值设置了一个索引

有谁知道我可以对这个错误做些什么并检索具有登录用户 UID 的朋友数组的文档?

再次感谢任何建议和帮助。 Cloud Firestore 的屏幕截图在这里

0 投票
1 回答
358 浏览

firebase - Flutter:使用 StreamBuilder 时应用程序静默崩溃

我试图弄清楚我的 StreamBuilder/Stream 的问题是什么:

因此,在 initstate 方法中,我得到了存储在状态中然后分配给 StreamBuilder 的流。

获取 Stream 的方法是:

我在构造函数 Page.fromMap() 中编写的打印语句(包括构造函数末尾的一个)已执行,因此我假设错误不存在。我在 map 方法中添加的打印语句(来自 .snapshots().map(...))没有执行,这对我来说没有意义,因为 Page 构造函数中的语句被执行(使用来自 firebase 文档的正确值)。

调用栈如下:

0 投票
0 回答
247 浏览

flutter - Streambuilder没有在颤动的对话框内被调用

我正在使用下面的代码。我单击某个按钮,如果我的 OTP 匹配下面的方法被调用。在那种方法中,我正在调用 bloc。我正在使用的小部件是 Statefulwidget。

0 投票
2 回答
6920 浏览

firebase - 更改 Firebase 实时数据库中的值时如何查看 Flutter 应用程序的更改?

在此处输入图像描述

每当我对 Firebase 实时数据库进行任何更改时,我都会尝试使这些滚动开关更改其值。

更具体地说,每当我将 Relay1/Data 的值更改为 0 时,我都希望该开关变为非活动状态。

我已经尝试并到处寻找,但我找不到任何解决方案。

0 投票
1 回答
166 浏览

flutter - 为什么 StreamBuilder 多次使用 initialData 而不是最新的快照?

我可能只是误解了飞镖的流,但是当我这样做时:

使用 TabBarView 渲染 StreamBuilder 时出现一些奇怪的行为。

首先,我必须使用asBroadcastStream()否则我会得到:

错误状态:Stream 已被收听

我承认这是一个糟糕的解决方案。

但是,虽然解决方案有效,但现在返回 TabBarView 中的 StreamBuilder 将重新使用 initialData 而不是流的最新快照来重建。这是两次返回选项卡时的打印输出:

I/flutter (14541):涂料
I/flutter (14541):正确的 URL
I/flutter (14541):涂料
I/flutter (14541):涂料

我认为这两个问题都是相关的,但我不明白为什么 StreamBuilder 重用 async* 和 initialData

0 投票
1 回答
766 浏览

flutter - 使用 StreamBuilder 从 Firestore 显示当前用户的数据(不是所有用户的数据)

我试图在颤振中使用 StreamBuilder 来返回一个列表,但仅适用于当前登录的用户。当我尝试

我不断收到以下错误:

在 null 上调用了 getter 'email'。

接收方:空

尝试呼叫:电子邮件

当我取出.where零件时它工作正常,但它只返回每个用户的所有数据,我只希望它返回链接到该当前用户的数据。

任何想法都会非常有帮助,所以提前谢谢你。

杰森

编辑:这是更多上下文的更多代码:

0 投票
1 回答
282 浏览

flutter - Streambuilder 仅在首次启动应用程序时显示来自本地缓存的数据

我正在使用 StreamBuilder 从 firestore 流式传输数据。

如果我取出.where流的一部分,它会将所有数据返回到设备。完成此操作后,我可以将.where部分放回原处,它工作正常。但是,它不会立即起作用。这表明该.where部分仅在缓存已经有数据时才有效。此外,如果我使用 Firestore 控制台添加文档,它不会使用新数据更新应用程序。但是由于某种原因,如果我删除该部分,它将显示所有更新的文档.where

我真的很困惑。有任何想法吗?

谢谢杰森

更新:我现在想出了如何解决这个问题。请参阅下面的答案,了解我是如何解决的。

0 投票
0 回答
894 浏览

flutter - Flutter for Firestore 中的 Streambuilder

嗨,我是 Flutter 的新手,我正在尝试使用流构建器从 Firestore 中获取数据,并在从 Firebase 数据库中获取数据时显示一个微调器。我尝试实现一个流构建器和未来构建器。我有一个从 Firestore 获取数据的函数,然后我将数据传递给另一个函数以填充银色网格。有人可以帮帮我吗?