我正在使用整体设计模式,当我从屏幕1导航屏幕2时,触发了dispose方法,因此我的流关闭了。从屏幕2弹出后,我返回屏幕1。但是在这种情况下,我的集团仍在内存中,并且当我想向流中添加数据时收到Bad state: Cannot add new events after calling close
错误。我需要在弹出后再次调用initstate或didchangedependecies方法来初始化我的bloc。有办法吗?
不久,我需要再次初始化我的集团。这就是我尝试过的。但是从其他屏幕弹出后,该方法不会触发。
DeckBloc deckBloc;
@override
void initState() {
deckBloc = new DeckBloc();
super.initState();
}
@override
void didChangeDependencies() {
deckBloc = new DeckBloc();
super.didChangeDependencies();
}
答案 0 :(得分:1)
当您要导航到第二页时,首先要等待结果,然后在进行的导航的结果回调中重新初始化您的bloc。
Navigator.of(context).pushNamed<void>('second page route')
.then((result){
//this block of code will run when you pop from the second page and navigate back here
//initialize your bloc here
deckBloc = new DeckBloc();
});