我读了Filip Hracek @filiph的一篇文章
源于流的异步性的一个缺点是,当您构建StreamBuilder时,它始终首先显示initialData(因为它是同步可用的),然后才显示来自Stream的第一个事件。这可能导致闪存(一帧)丢失数据。有一些方法可以防止这种情况发生-请继续关注,以获取更详细的文章。
我正在面对这个问题,我需要知道防止闪光的方法。如果有人知道这条路,那就太好了。我正在将新数据添加到接收器,然后访问流构建器快照以获取数据。但是,如果我使用rxdart,它将返回null或某些种子值的初始数据。我想要最新的数据,我尝试使用async-
等待,但这没有帮助。我正在设置Map中的snapshot.data
值,并将索引与我的itemBuilder相关联。
这是示例代码
return ListView.builder(
itemBuilder: (context, int index){
return checkboxListTile(
title: Text(xyz)
value: valueMap[key[index]];
onChanged:(value){bloc.myController.sink.add(value);
valueMap[key[index]] = snapshot.data;}
);
}
);
snapshot.data
返回旧值。因此,它基本上滞后了一步。我了解它的一个asynchronous
和synchronous
问题。但是我需要解决的办法。
答案 0 :(得分:0)
在我看来,这是一次成功还是失败,因为我依赖于Firestore云功能正在更新的数据!!!!!!
取决于函数执行的速度,数据并不总是如预期的那样。