【问题标题】:StreamBuilder and AsyncSnapshot + rxdart flutter questionStreamBuilder 和 AsyncSnapshot + rxdart 颤振问题
【发布时间】:2019-03-13 12:25:30
【问题描述】:

我的 bloc 组件中有 final _fetcher = PublishSubject<MyModel>() ;。这是MyModel的结构:

MyModel { List<MyObjects> _objects = []; 
List<MyObjects> get allObjects => _objects; }

还有

Observable<MyModel> get myObjects => _fetcher.stream;

整体。

我有两个页面,第一个显示MyObjects 内部Listview.builder 的列表,第二个显示选定的MyObject 数据。
我正在尝试使用StreamBuildermyObjects 获取数据。
在第一页中,所有对象都完美显示。但是当我打开一个带有选定对象的页面时,我在StreamBuilder 内的AsyncSnapshot 总是有connections.state 等待,尽管我在流中有数据。
我做错了什么?

【问题讨论】:

    标签: flutter rxdart


    【解决方案1】:

    拥有数据并不意味着您始终可以访问它。

    默认情况下,流(和主题)不存储他们之前收到的数据。因此,如果您参加聚会迟到了,那么对不起,但没有数据。

    为了解决这个问题,rxdart 引入了 ReplaySubject 和 BehaviorSubject。两者都被使用,以便迟到的听众仍然可以抓住最后几个事件。 ReplaySubject 将跟踪 N 个最新的,而 BehaviorSubject 将只保留最后一个。

    使用 BehaviorSubject 代替 PublishSubject 应该可以解决问题

    【讨论】:

      猜你喜欢
      • 2021-05-11
      • 2020-12-26
      • 2019-11-16
      • 1970-01-01
      • 2021-05-27
      • 2021-11-16
      • 2021-05-05
      • 2022-01-12
      • 2021-10-20
      相关资源
      最近更新 更多