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