【问题标题】:Flutter stream builders conceptFlutter 流构建器概念
【发布时间】: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;
     }

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

【问题讨论】:

    标签: flutter flutter-layout flutter-dependencies flutter-animation flutter-sliver


    【解决方案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),所以不,就好像事件从未发送过一样。
    猜你喜欢
    • 2019-12-18
    • 2011-02-18
    • 2014-09-13
    • 2011-04-29
    • 1970-01-01
    • 2010-10-17
    • 2020-12-24
    • 2015-02-07
    • 1970-01-01
    相关资源
    最近更新 更多