可以将同一流(QuerySnapshot)与不同页面上的多个StreamBuilder一起使用吗? ---扑

时间:2020-08-19 15:12:15

标签: flutter stream

也许这是一个新手问题,但是我想知道是否可以使用相同的stream(Stream)来构建两个页面的UI。让我们举个例子:如果有两个页面应该显示从firebase读取的相同数据列表(例如用户名和地址)。是否可以通过一次从firestore中读取数据并在每个页面上将相同的 stream streambuilder 一起使用来完成?

我能够在第一页上显示列表(使用streambuilder和Listview.builder),但是当我导航到第二页并使用相同的流(不再从firebase读取此内容,而是使用与第一页相同的流)页)不起作用。我尝试了StreamController.broadcast();也没有运气。

有人可以在这里帮助吗?

1 个答案:

答案 0 :(得分:0)

之所以会这样,是因为流中已经有侦听器(第一个StreamBuilder)。相反,您可以使用某种状态管理(它会因应用程序的复杂性而异)并提供流。

假设您正在听Stream<List<int>>(举一个简单的例子)。如果您使用flutter_bloc包,则可能有一个带有StreamSubscription的BLoC,它将是该Stream的唯一侦听器,然后您可以在整个应用程序中使用BLoC的数据。
如果您对反应式编程和Dart Streams知之甚少,可能会感到困惑(我必须承认,我已经花了很多时间试图理解它-但它比它的接缝还简单!),但是fluter_bloc包中有很好的文档。您可以在an example中将StreamSubscription与Firestore一起使用!

如果您对该软件包或任何示例有疑问,请随时在GitHub存储库中发布问题!