【发布时间】:2019-08-26 16:06:33
【问题描述】:
我有一个 StatefulWidget,它通过 ModalRoute.of(context).addLocalHistoryEntry() 添加到其 Navigator 的本地历史记录中。当发生某些更改时,我想重置小部件的状态并清除它添加的任何本地历史记录。我在 ModalRoute 上没有看到任何 API 来完成此操作。
【问题讨论】:
标签: flutter flutter-navigation
我有一个 StatefulWidget,它通过 ModalRoute.of(context).addLocalHistoryEntry() 添加到其 Navigator 的本地历史记录中。当发生某些更改时,我想重置小部件的状态并清除它添加的任何本地历史记录。我在 ModalRoute 上没有看到任何 API 来完成此操作。
【问题讨论】:
标签: flutter flutter-navigation
对我有用的是在第一次构建之前检查当前路线,然后使用Navigator.popUntil() 一次删除所有本地历史条目。
@override
void didChangeDependencies() {
initialRoute ??= ModalRoute.of(context);
super.didChangeDependencies();
}
void reset() {
Navigator.of(context).popUntil((route) => route == initialRoute);
}
但是请注意,如果另一个小部件在同一 ModalRoute 上使用本地历史条目,则这些本地历史条目也将被删除。更彻底的解决方案需要访问最顶层的路由或至少当前 ModalRoute 上本地历史条目的长度。
【讨论】: