【发布时间】:2020-12-19 11:25:24
【问题描述】:
我正在尝试将一些数据传递给 rxdart 主题。我有一个流构建器,它可以访问我的产品集团中的数据。现在,当我尝试访问小部件树之外的 bloc 时,出现此错误。
Unhandled Exception: Bad state: Cannot add new events after calling close.
这是我的集团。我想访问我的 widgetTree 之外的 bloc 内的 removeProduct 函数(即来自套接字事件。)。如果主题不活动很好,但如果主题是活动的,我想更改主题并重建流构建器。这是我的集团。
class MyProductsBloc {
final MyProductsRepo _repository = MyProductsRepo();
final BehaviorSubject<MyProducts> _subject = BehaviorSubject<MyProducts>();
getMyProducts() async {
final id = UserController.to.id;
MyProducts response = await _repository.getProducts(id);
_subject.sink.add(response);
}
removeProduct(id) async {
if(!_subject.isClosed){
_subject.value.data.removeWhere((element) => element.id == id);
_subject.sink.add(_subject.value);
}
}
dispose() {
_subject?.close();
}
BehaviorSubject<MyProducts> get subject => _subject;
}
final myProductsBloc = MyProductsBloc();
编辑:我有什么理由应该在我的小部件树中处理 bloc 吗?因为我没有访问 bloc 的多个实例,因为 bloc 本身提供了实例,我什至应该处置吗?我需要能够在外部更新块中预先存在的值,因此我希望在应用程序的整个生命周期中保持流打开。
【问题讨论】: