飞镖流落后

时间:2018-07-20 20:03:26

标签: dart flutter

我读了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返回旧值。因此,它基本上滞后了一步。我了解它的一个asynchronoussynchronous问题。但是我需要解决的办法。

1 个答案:

答案 0 :(得分:0)

在我看来,这是一次成功还是失败,因为我依赖于Firestore云功能正在更新的数据!!!!!!

取决于函数执行的速度,数据并不总是如预期的那样。