Flutter 流构建器概念

Posted

技术标签:

【中文标题】Flutter 流构建器概念【英文标题】:Flutter stream builders concept 【发布时间】:2019-05-09 11:05:46 【问题描述】:

我有一个地图,我在其中存储键和值对。我已将此地图放入流中,为方便起见,我们将其称为 dataStream。

现在我有一个流构建器,这个流构建器使用 dataStream。我希望仅在更改特定键的值时才构建此流构建器。

目前,我的流构建器会响应地图中的任何更改。我想指示它仅在地图中某个键的值更改时才更改。这在流构建器中是否可行?如何实现?

return StreamBuilder(
    stream: dataBloc.dataStream,
    builder: (context, snapshot) 
     if(snapshot.hasData)
     Map<String, String> dataMap = snapshot.data;
     // some logic
     
     return widget;
     

我想查看此映射中特定键的值是否发生变化,然后才重建我现有的小部件,否则保持原样。不要再次构建它

【问题讨论】:

【参考方案1】:

您应该能够使用where 过滤特定事件:

stream: dataBloc.dataStream.where((item) => /* check criteria */ item['key'] == 'foo')

【讨论】:

我是否可以使用 snapshot.data 访问我的 dataStream 中的地图?我不确定如何在 where 子句中访问它; 我明白了。不知道这是关于 Firebase 的。 itemsnapshot.databuilder: ... 中返回的相同 我还有一个问题,如果我的 where 子句为 false 会怎样;会重建吗?理想情况下,如果 where 子句的输出发生变化,我希望它重建! 例如,如果满足条件则构建,如果不满足则构建不同。 如果 where 子句为 false,则事件将被过滤,不会传递给侦听器(StreamBuilder),所以不,就好像事件从未发送过一样。

以上是关于Flutter 流构建器概念的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:为啥这个流构建器不起作用?

Flutter,内部流构建器,如何根据未来获取流?

FLUTTER:如何在流构建器中使用导航器?

Flutter - 如何在流构建器中使用 await?

Flutter/Firestore - 在流构建器中的动态列表视图上实现“分页”

FLUTTER,FIRESTORE:我有一个流构建器,它从集合中的所有文档中返回某个字段..如何添加查询?