Flutter 同一个流(QuerySnapshot)能否与不同页面上的多个StreamBuilder一起使用---颤振

Flutter 同一个流(QuerySnapshot)能否与不同页面上的多个StreamBuilder一起使用---颤振,flutter,stream,Flutter,Stream,也许这是一个新手问题,但我想知道是否可以使用相同的流(stream)来构建两个页面的UI。让我们举个例子:如果有两个页面应该显示从firebase读取的相同数据列表(比如用户名和地址)。这可以通过从firestore读取一次数据,并在每页上使用与streambuilder相同的流来完成吗 我能够在第一页上显示列表(使用streambuilder和Listview.builder),但当我导航到第二页并使用相同的流(不是再次从firebase读取,而是使用第一页读取的相同流)时,它不起作用。我试过

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

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


这里有人能帮忙吗?

发生这种情况是因为流已经有了侦听器(第一个
StreamBuilder
)。相反,您可以使用某种状态管理(根据应用程序复杂性的不同而有所不同)并提供流

假设您正在收听
(这是一个简单的示例)。如果您使用
flatter\u bloc
包,您可以拥有一个带有
StreamSubscription
的bloc,该bloc将是该
流的唯一侦听器,然后您可以在应用程序周围使用来自bloc的数据。
如果您对反应式编程和Dart流知之甚少(我必须承认,我花了很多时间试图理解它——但它比它简单!),这可能有点令人困惑,但是
fluer\u bloc
包有一个很棒的文档。您可以找到它在Firestore中使用
StreamSubscription
的位置

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