【发布时间】:2021-03-06 07:04:39
【问题描述】:
我有一堂课,里面有这段代码:
class GeofenceManager {
ReceivePort geofencingMessagePort = ReceivePort();
Stream<String> get events {
return geofencingMessagePort.map((event) => event.toString());
}
...
在我的 UI 中,我有一个像这样的 StreamBuilder:
@override
Widget build(BuildContext context) {
super.build(context);
var geofenceManager = Provider.of<GeofenceManager>(context);
return StreamBuilder(
initialData: "Waiting ...",
stream: geofenceManager.events,
...
但它不起作用。当我运行应用程序时出现此错误:
Bad state: Stream has already been listened to.
UI 的第一次构建有效,但如果我触发了第二次构建,我会收到错误消息。我尝试过使用asBroadcastStream(),但并没有解决问题。
所以我有点卡住了,知道如何解决这个问题吗?
【问题讨论】: