У меня есть поток A, который выводится из потока Websocket (после преобразования, ...)
Существует ли API для "добавления событий / данных" в мой поток A?
Если это невозможно сделать напрямую, нужно ли мне создавать собственный поток B с моими пользовательскими событиями и объединять A + B в новый поток C? Я тоже не знаю, как это сделать (бит объединения).
Ниже приведено то, что я тестировал до сих пор, похоже, что оно работает, но я новичок в Dart, и это выглядит излишне:
Stream<int> countStream(int from, int to) async* {
for (int i = from; i <= to; i++) {
yield i;
}
}
main() async {
var stream = countStream(0, 30);
final multiStream = StreamSplitter(stream);
var even1 = multiStream.split().where((i) => i.isEven);
var odd1 = multiStream.split().where((i) => i.isOdd);
var other = multiStream.split().where((i) => i % 3 == 0);
multiStream.close();
/*
What I just want to do at the end :
other.listen((i) => add $i to odd1 or even1 after complex transformation);
*/
var other2 = other.map((n) => -n);
final multiStream2 = StreamSplitter(other2);
var even2 = multiStream2.split().where((i) => i.isEven);
var odd2 = multiStream2.split().where((i) => i.isOdd);
multiStream2.close();
var even = StreamGroup.merge([even1, even2]);
var odd = StreamGroup.merge([odd1, odd2]);
even.listen((i) => print("even $i"));
odd.listen((i) => print("odd $i"));
}