【发布时间】:2023-03-21 12:56:02
【问题描述】:
我有一个包含广播流的存储
Stream<List<DeliveryModel>> get deliveriesStream {
this._getDeliveries();
return this._controller.stream.asBroadcastStream();
}
并且有两个订阅者,一旦我开始手动收听,
var stream = this._deliveryRepo.deliveriesStream;
deliveriesSubscription = stream.listen((deliveries) {
// to do something
});
一次通过 StreamBuilder
@override
void initState() {
super.initState();
this.stream = this.widget.deliveriesFetcher.getDeliveriesStream();
}
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: this.stream,
builder: (context, snapshot) {
// do something
});
}
在哪里
@override
Stream<List<DeliveryModel>> getDeliveriesStream() {
return this._deliveryRepo.deliveriesStream;
}
如果我理解正确,我订阅了两次广播流,所以一切都应该没问题,但是当我第二次尝试订阅流时(通过StreamBuilder),它会抛出异常: 状态不佳:Stream 已被收听。 有什么建议吗?
【问题讨论】:
标签: flutter dart-async