StreamBuilder和AsyncSnapshot + rxdart抖动问题

时间:2018-10-08 19:31:56

标签: flutter rxdart

我的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数据。
我正在尝试使用myObjectsStreamBuilder获取数据。
在第一页中,所有对象均显示完美。但是,当我打开带有选定对象的页面时,尽管我有数据在流中,但AsyncSnapshot中的StreamBuilder总是有connections.state处于等待状态。
我在做什么错了?

1 个答案:

答案 0 :(得分:2)

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

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

为解决此问题,rxdart引入了ReplaySubject和BehaviorSubject。两者都被使用,以便后期的听众仍然可以抓住最近的几个事件。 ReplaySubject将跟踪最近的N个,而BehaviorSubject将仅跟踪最后一个。

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