0

我有一个 StatefulWidget,它通过ModalRoute.of(context).addLocalHistoryEntry(). 当发生某些更改时,我想重置小部件的状态并清除它添加的任何本地历史记录。我没有看到任何 APIModalRoute来实现这一点。

4

1 回答 1

0

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

@override
void didChangeDependencies() {
  initialRoute ??= ModalRoute.of(context);
  super.didChangeDependencies();
}

void reset() {
  Navigator.of(context).popUntil((route) => route == initialRoute);
}

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

于 2019-08-26T16:14:54.507 回答