【问题标题】:Remove all local history entries in Flutter删除 Flutter 中的所有本地历史记录
【发布时间】:2019-08-26 16:06:33
【问题描述】:

我有一个 StatefulWidget,它通过 ModalRoute.of(context).addLocalHistoryEntry() 添加到其 Navigator 的本地历史记录中。当发生某些更改时,我想重置小部件的状态并清除它添加的任何本地历史记录。我在 ModalRoute 上没有看到任何 API 来完成此操作。

【问题讨论】:

    标签: flutter flutter-navigation


    【解决方案1】:

    对我有用的是在第一次构建之前检查当前路线,然后使用Navigator.popUntil() 一次删除所有本地历史条目。

    @override
    void didChangeDependencies() {
      initialRoute ??= ModalRoute.of(context);
      super.didChangeDependencies();
    }
    
    void reset() {
      Navigator.of(context).popUntil((route) => route == initialRoute);
    }
    

    但是请注意,如果另一个小部件在同一 ModalRoute 上使用本地历史条目,则这些本地历史条目也将被删除。更彻底的解决方案需要访问最顶层的路由或至少当前 ModalRoute 上本地历史条目的长度。

    【讨论】:

      猜你喜欢
      • 2016-02-24
      • 2020-03-22
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 2012-04-06
      • 2016-03-13
      • 2012-12-05
      • 2014-07-07
      相关资源
      最近更新 更多