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 的。item
与 snapshot.data
在 builder: ...
中返回的相同
我还有一个问题,如果我的 where 子句为 false 会怎样;会重建吗?理想情况下,如果 where 子句的输出发生变化,我希望它重建!
例如,如果满足条件则构建,如果不满足则构建不同。
如果 where 子句为 false,则事件将被过滤,不会传递给侦听器(StreamBuilder),所以不,就好像事件从未发送过一样。以上是关于Flutter 流构建器概念的主要内容,如果未能解决你的问题,请参考以下文章