【问题标题】:Can same stream(QuerySnapshot) be used with multiple StreamBuilder on different pages? ---Flutter同一流(QuerySnapshot)可以与不同页面上的多个 StreamBuilder 一起使用吗? - -扑
【发布时间】:2020-12-08 21:41:13
【问题描述】:

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

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

有人可以帮忙吗?

【问题讨论】:

    标签: flutter stream


    【解决方案1】:

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

    假设您正在收听Stream<List<int>>(举个简单的例子)。如果您使用 flutter_bloc 包,您可以拥有一个带有 StreamSubscription 的 BLoC,这将是该 Stream 的唯一侦听器,然后您可以在您的应用程序周围使用来自 BLoC 的数据。
    如果你对响应式编程和 Dart Streams 知之甚少,这可能会有点令人困惑(我必须承认,我已经浪费了很多时间来试图理解它——但它比接缝更简单!),但是 fluter_bloc 包有一个很棒的文档。您可以在其中找到 an example,它将 StreamSubscription 与 Firestore 一起使用!

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

    【讨论】:

      猜你喜欢
      • 2010-10-04
      • 1970-01-01
      • 2019-09-27
      • 2010-12-06
      • 2019-09-06
      • 2013-01-05
      • 2022-11-26
      • 1970-01-01
      相关资源
      最近更新 更多