如何使用Dart从地图制作流

时间:2019-05-09 20:26:58

标签: dart stream

借助Dart,我可以使用Stream.fromIterable(list)从列表中创建Stream对象。但是,如果我想流经诸如var map={"a":1, "b":2, 3:4, 6:5};这样的Map()会怎样?

2 个答案:

答案 0 :(得分:0)

那将是什么并不清楚。较小的地图可能是一种方式,也可能是2元素数组(例如Python元组)。生成器函数将是这样做的方式:

Stream<Map<String, dynamic>> mapStream(Map source) async* {
    for (var k in source.keys) {
        yield { "key": k, "value": source[k] };
    }
}

答案 1 :(得分:0)

@jamesdlin提供了我一直在寻找的答案。这是一个示例:

  Map<dynamic, int> map = {1: 1, 'a': 10, 'b': 20, 3: 2, 4: 4, 6: 5};
  Stream stream = Stream.fromIterable(map.entries);

  await stream
      .where((i) => i.key.runtimeType == int)
      .listen((i) => print(i.value))
      .onDone(() => print("done"));