Flutter 如何在widgetTree之外访问rxdart bloc函数?
我正在尝试将一些数据传递给rxdart主题。我有一个streambuilder,可以访问我的产品群中的数据。现在,当我试图访问widget树之外的bloc时,我得到了这个错误Flutter 如何在widgetTree之外访问rxdart bloc函数?,flutter,dart,rxdart,Flutter,Dart,Rxdart,我正在尝试将一些数据传递给rxdart主题。我有一个streambuilder,可以访问我的产品群中的数据。现在,当我试图访问widget树之外的bloc时,我得到了这个错误 Unhandled Exception: Bad state: Cannot add new events after calling close. 这是我的阵营。我想访问widgetTree之外的bloc内部的removeProduct函数(即从套接字事件)。如果主题未处于活动状态,则可以,但如果主题处于活动状态,则
Unhandled Exception: Bad state: Cannot add new events after calling close.
这是我的阵营。我想访问widgetTree之外的bloc内部的removeProduct函数(即从套接字事件)。如果主题未处于活动状态,则可以,但如果主题处于活动状态,则我希望更改主题并重建streambuilder。这是我的阵营
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();
类MyProductsBloc{
最终MyProductsRepo _repository=MyProductsRepo();
最终行为主体_subject=行为主体();
getMyProducts()异步{
最终id=UserController.to.id;
MyProducts response=wait_repository.getProducts(id);
_subject.sink.add(响应);
}
removeProduct(id)异步{
如果(!\u主题已关闭){
_subject.value.data.removeWhere((element)=>element.id==id);
_subject.sink.add(_subject.value);
}
}
处置{
_主题?.close();
}
行为主体get subject=>\u subject;
}
最终myProductsBloc=myProductsBloc();
编辑:有什么理由我应该在我的小部件树中处理bloc吗?因为我没有访问bloc的多个实例,因为bloc本身提供了实例,所以我甚至应该处理它吗?我需要能够从外部更新集团中预先存在的值,以便在应用程序的整个生命周期中保持流的开放。Make
MyProductsBloc
具有更大的范围,例如应用程序范围
BlocProvider(
集团:。。。,
子项:MaterialApp(…)
)
MakeMyProductsBloc
具有更大的范围,例如应用程序范围
BlocProvider(
集团:。。。,
子项:MaterialApp(…)
)