【发布时间】:2021-01-20 11:51:33
【问题描述】:
我正在使用来自 Flutter 的 Navigator 2.0 的新页面和路由器 API
我的问题是我打开了页面 A 和 B,然后将 deepLink 调用到页面 A。所以我要做的是清除导航器中使用的 pages 列表并使用新页面 A 重新创建页面。
但此时发生的事情是,Navigator 重用了之前存在的相同页面 A,并且只更新了它的状态和属性(小部件)。
我尝试在 Page(如下)上覆盖方法 canUpdate 以告诉该页面现在应该重建它,但问题是 Page 类是不可变的,所以它抱怨我不能拥有非最终变量。
class CustomPage<T> extends Page<T> {
final Widget child;
bool _pageCanBeUpdated = true;
CustomPage({@required this.child, Key key}) : super(key: key);
@override
Route<T> createRoute(BuildContext context) {
return MaterialPageRoute(
builder: (context) => child,
settings: this,
);
}
void shouldCleanPage() {
_pageCanBeUpdated = false;
}
@override
bool canUpdate(Page other) {
return _pageCanBeUpdated && super.canUpdate(other);
}
}
【问题讨论】:
标签: flutter state router navigator