我的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
数据。
我正在尝试使用myObjects
从StreamBuilder
获取数据。
在第一页中,所有对象均显示完美。但是,当我打开带有选定对象的页面时,尽管我有数据在流中,但AsyncSnapshot
中的StreamBuilder
总是有connections.state
处于等待状态。
我在做什么错了?
答案 0 :(得分:2)
拥有数据并不意味着您总是可以访问它。
默认情况下,流(和主题)不存储它们之前收到的数据。因此,如果您迟到聚会,那就对不起您,但没有数据。
为解决此问题,rxdart引入了ReplaySubject和BehaviorSubject。两者都被使用,以便后期的听众仍然可以抓住最近的几个事件。 ReplaySubject将跟踪最近的N个,而BehaviorSubject将仅跟踪最后一个。
使用BehaviorSubject而不是PublishSubject应该可以解决问题