gpt4 book ai didi

flutter - 如何在widgetTree之外访问rxdart-bloc函数?

转载 作者:行者123 更新时间:2023-12-03 03:50:28 29 4
gpt4 key购买 nike

我正在尝试将一些数据传递给rxdart主题。我有一个streambuilder,可以从我的产品集团访问数据。现在,当我尝试访问小部件树之外的块时,出现此错误。

 Unhandled Exception: Bad state: Cannot add new events after calling close.
这是我的集团。我想在我的widgetTree外部的块内访问removeProduct函数(即从套接字事件开始)。如果主题未处于 Activity 状态,则很好,但是如果主题处于 Activity 状态,则我想更改主题并重建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();
编辑:有什么原因我应该在我的小部件树中放置块?因为我不访问bloc的多个实例,因为bloc本身提供了该实例,所以我什至应该处置?我需要能够外部更新团体中预先存在的值,因此我想在应用程序的整个生命周期中保持流打开。

最佳答案

使MyProductsBloc具有更大的范围,例如App范围

BlocProvider<MyProductsBloc>(
bloc: ...,
child: MaterialApp(...)
)

关于flutter - 如何在widgetTree之外访问rxdart-bloc函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63669160/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com