弹出堆栈后如何调用initstate或didchangedependencies

时间:2020-08-21 13:56:09

标签: flutter dart

我正在使用整体设计模式,当我从屏幕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();
  }

1 个答案:

答案 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();
   });