Dart 从映射流创建列表流

Dart 从映射流创建列表流,dart,stream,Dart,Stream,我有一个项目需要我处理streams 我有一个带有以下代码的地图流: Stream<Map<String,TextBlock>> get phoneNumberBlocks => visionMatch.map((MatchVisionTextRegex ourRegexDetection) { final Map<String,TextBlock> list = <String,TextBlock>{};

我有一个项目需要我处理streams

我有一个带有以下代码的地图流:

Stream<Map<String,TextBlock>> get phoneNumberBlocks =>
      visionMatch.map((MatchVisionTextRegex ourRegexDetection) {
        final Map<String,TextBlock> list = <String,TextBlock>{};
        for (MatchVisionTextData textData in ourRegexDetection.phone) {
          list[textData.parsedText]=textData.textBlock;
        }
        return list;
      }).asBroadcastStream();
它完全坏了,不能工作!:)有什么办法可以做到这一点吗


谢谢

您可以使用
StreamTransformer
,因为它的目的是接收流、转换流并返回新流

因此,给定
映射的

StreamController-StreamController=StreamController.broadcast();
Stream get phoneNumberBlocks=>streamController.Stream;
您可以创建一个新的,如下所示:

Stream get phoneNumbers=>phonenumberblock.transform(StreamTransformer.fromHandlers(
handleData:(地图数据,接收器){
sink.add(data.keys.toList());
}
));
StreamTransformer
将从
phonenumberblock
接收数据,并仅将地图中的
键添加到
列表的新
流中

一个实际例子:

void main(){
电话号码。听((s)=>打印);
streamController.sink.add({
“1”:“a”,
“2”:“b”,
‘3’:‘c’,
});
}
控制台:

[1,2,3]


在行动中看到它。

老兄,你应该为尽可能最好的答案获得奖励!代码示例,代码描述,实践示例,在省道板上运行代码。你帮了我很多!非常感谢你!
Stream<List<String>> get phoneNumbers =>
      phoneNumberBlocks.map<String,TextBlock>((String s, TextBlock b) =>
      s).asBroadcastStream();