Как создать поток из карты с помощью Dart - PullRequest
0 голосов
/ 09 мая 2019

С помощью Dart я могу создать объект Stream из списка, используя Stream.fromIterable(list).Но что, если я хочу передать по карте (), например var map={"a":1, "b":2, 3:4, 6:5};

Ответы [ 2 ]

0 голосов
/ 12 мая 2019

@ у 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"));
0 голосов
/ 10 мая 2019

Не очевидно, что это будет за поток.Меньшие карты могут быть односторонними или двухэлементными массивами (например, кортеж Python).Генераторная функция будет способ сделать это:

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