【问题标题】:how to call initstate or didchangedependencies after pop stack弹出堆栈后如何调用initstate或didchangedependencies
【发布时间】:2023-04-10 11:52:01
【问题描述】:

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

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    当您即将导航到第二页以等待结果并在您所做的导航的结果回调中重新初始化您的块时。

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

    【讨论】:

    • 很高兴我能帮上忙
    猜你喜欢
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 2020-04-24
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 2016-08-20
    相关资源
    最近更新 更多