StreamBuilder 和 AsyncSnapshot + rxdart flutter 问题

StreamBuilder and AsyncSnapshot + rxdart flutter question

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

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

还有

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

集团内。

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

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

默认情况下,流(和主题)不存储它们之前收到的数据。因此,如果您迟到了,那么很抱歉,但没有数据。

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

使用 BehaviorSubject 而不是 PublishSubject 应该可以解决问题