Как мы можем смешивать потоки в дротике? - PullRequest
0 голосов
/ 13 января 2019

Пусть Two Stream доставит два разных типа данных. Я хочу один поток из этих двух потоков, которые объединяют данные и переносят их в класс данных и доставляют его.

Пример:

Stream<String> stream1;
Stream<String> stream2;

class Data{
    String s1;
    String s2;
    Data(this.s1,this.s2);
}

Ответы [ 2 ]

0 голосов
/ 23 июля 2019

Использовать функцию преобразования потока combLatest из пакета stream_transform (добавить зависимость к «stream_transform» в pubspec.yml).

import 'package:stream_transform/stream_transform.dart' show combineLatest;

Stream<Data> combinedStream(Stream<String> stream1, Stream<String> stream2) {
  return stream1.transform(combineLatest(stream2, (s1, s2) => Data(s1, s2)));
}

Также здесь ответили: https://stackoverflow.com/a/55912217/3635696 (не сообщая, как получить доступ к функции combLastest).

0 голосов
/ 13 января 2019

Для этого не существует готового решения. Обычно для этого вам нужно создать собственную логику (называемую StreamTransformer).

С другой стороны, вы можете использовать сторонние библиотеки. Например, rxdart, который включает несколько операторов слияния потоков:

Stream<String> stream1;
Stream<String> stream2;
Stream<String> concat = Observable.combineLatest2(stream1, stream2, (a, b) => a + b);
...