да, хорошие люди,
Я, наверное, что-то здесь упускаю:
этот код вымышленный (это упрощение, для удобства всех), но дает идею:
_map.keys.forEach((key) async {
_bloc.sink.add(_map[key]);
await for (String _string in _bloc.stream) {
_newMap.putIfAbsent(key, ()=> _string);
}
});
или
Stream.fromIterable(_map.keys).forEach((day) async {
_bloc.sink.add(_map[key]);
await for (String _string in _bloc.stream) {
_newMap.putIfAbsent(key, ()=> _string);
}
});
с StreamController <...>. Broadcast ();потоки работоспособны:
first: _Future hashCode: 817453996 isBroadcast: true isEmpty: _Future last: _Future length: _Future runtimeType: Type (_BroadcastStream <...>) single: _Future _awaiter: null _generator: null _controller: _AsyncBroadcastStreamController
без возвращает эту ошибку:
first: необработанное исключение: \ nBad состояние: поток уже прослушан. [...] hashCode: 644468606 isBroadcast: false isEmpty: необработанное исключение: \ nBad состояние: поток уже прослушан. [...] last: необработанное исключение: \ nBad состояние: поток уже прослушан. [...] длина: необработанныйисключение: \ nBad состояние: поток уже прослушан. [...] runtimeType: Type (_ControllerStream <...>) single: необработанное исключение: \ nBad состояние: поток уже прослушан. [...]_awaiter: null _generator: null _controller: _AsyncStreamController
в обоих случаях не работает.
что я намеревался сделать (внутри цикла for) для отправкиd в приемнике коллекция,
, блок выполнит некоторую работу и вернет другую коллекцию в потоке,
, что я вижу из отладки, это то, что цикл просто продолжает посылать материал в приемник.
Я не уверен, что это потому, что:
...
1) цикл не ждет "ожидать "
" и вызывает ошибку "поток уже прослушивается"
2) и наоборот "ожидание" не может прослушиватьпоток из-за ошибки
(или из-за того, что трансляция может потерять событие), поэтому цикл продолжает цикл (?);
...
I 'еще больше склоняется к первому, но все должно работать в соответствии с этим POST
что я делаю не так?
заранее спасибо, Франческо