gpt4 book ai didi

dart - 从 map 流创建列表流

转载 作者:行者123 更新时间:2023-12-03 03:40:35 25 4
gpt4 key购买 nike

我有一个项目,要求我使用流。

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

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();

现在,我想创建另一个流,该流采用 map 的 phoneNumberBlocks流,并返回该 map 的键列表的另一个流。

到目前为止,我有这个:
Stream<List<String>> get phoneNumbers =>
phoneNumberBlocks.map<String,TextBlock>((String s, TextBlock b) =>
s).asBroadcastStream();

这完全坏了,不起作用! :)任何想法如何实现这一目标?

谢谢

最佳答案

您可以使用StreamTransformer,因为它的目的是接收流,对其进行转换并返回一个新流。

因此,给定StreamMap<String,String>:

StreamController<Map<String,String>> streamController = StreamController.broadcast();
Stream<Map<String,String>> get phoneNumberBlocks => streamController.stream;

您可以这样创建一个新的:

Stream<List<String>> get phoneNumbers => phoneNumberBlocks.transform(StreamTransformer.fromHandlers(
handleData: (Map<String,String> data, sink) {
sink.add(data.keys.toList());
}
));
StreamTransformer将接收来自 phoneNumberBlocks的数据,并将 map 中的 keys仅添加到 Stream的新 List<String>中。

一个实际的例子:

void main() {
phoneNumbers.listen((s) => print(s));

streamController.sink.add({
'1': 'a',
'2': 'b',
'3': 'c',
});
}

安慰:

[1, 2, 3]



在行动 here中查看它。

关于dart - 从 map 流创建列表流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56612575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com