Dart / Flutter:错误“流已被收听。” fa“for循环”中的&&“等待”失败

Posted

技术标签:

【中文标题】Dart / Flutter:错误“流已被收听。” fa“for循环”中的&&“等待”失败【英文标题】:Dart / Flutter: Error "Stream has already been listened to." && "await for" inside fa "for loop" fails 【发布时间】:2019-08-27 03:47:34 【问题描述】:

好人啊,

我可能在这里遗漏了一些东西:

这段代码是虚构的(为了大家方便,它过于简单化了),但给出了这个想法:

_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 最后:_未来长度:_未来运行时类型:类型 (_BroadcastStream<...>) 单曲:_Future _awaiter:null _generator:null _controller:_AsyncBroadcastStreamController

不返回此错误:

first:Unhandled exception:\nBad state: Stream has already been 听过。[...] hashCode:644468606 isBroadcast:false isEmpty:Unhandled exception:\nBad state: Stream has already been 听过。[...] last:Unhandled exception:\nBad state: Stream has 已被收听。[...] 长度:未处理的异常:\n错误状态: Stream 已经被监听。[...] runtimeType:Type (_ControllerStream<...>) single:未处理的异常:\n错误状态: 流已被收听。[...] _awaiter:null _generator:null _controller:_AsyncStreamController

在这两种情况下都不起作用。

我打算做的是(在 for 循环内)向接收器发送一个集合,

一个块会做一些工作并在流中返回另一个集合,

我从调试中看到的是循环只是不断向接收器发送东西。

我不确定是因为:

...

1)循环不等待“等待”

并导致错误“流已侦听”

2)反之亦然“等待”因为错误而无法收听流

(或者因为广播可能会丢失事件)因此循环继续循环(?);

...

我更倾向于第一个,但它应该根据这个POST工作

我做错了什么?

提前谢谢你,弗朗西斯科

【问题讨论】:

【参考方案1】:

您似乎不止一次调用了 stream.listen。尝试将 _bloc.stream 分配给 for 循环之外的变量。

var stream = _bloc.stream;


_map.keys.forEach((key) async 
  _bloc.sink.add(_map[key]);
await for (String _string in stream) 
 _newMap.putIfAbsent(key, ()=> _string);

);

【讨论】:

以上是关于Dart / Flutter:错误“流已被收听。” fa“for循环”中的&&“等待”失败的主要内容,如果未能解决你的问题,请参考以下文章

错误:未找到:'dart:ui' import 'dart:ui' - Flutter

全新 Flutter 和 Dart 安装时的构建错误(导入错误)

错误 Dart/Flutter: 'context != null': 不正确

VS Code (Flutter, dart) 错误在注释或删除代码后不会消失

Flutter / dart异常地理定位错误

在 VSCode 中使用 Flutter 的 Dart 错误不断出现