【问题标题】:didPopNext isn't called when poping rootNavigator route back to CupertinoTabView route将 rootNavigator 路由弹出回 CupertinoTabView 路由时不调用 didPopNext
【发布时间】:2020-08-26 06:42:22
【问题描述】:
我的应用正在使用 CupertinoTabScaffold 和 CupertinoTabView,它们使用自己的导航器(不是根导航器)。要打开一个应该覆盖整个屏幕(也是选项卡)的某个屏幕,我正在使用 Navigator.of(context, rootNavigator: true).push。
问题是出于不同的目的,我正在使用 routeObserver 和 RouteAware 跟踪屏幕更改。我发现对于上面提到的使用根导航器打开屏幕的情况,关闭全屏页面时不会调用didPopNext。我假设这与关闭此屏幕 Flutter 从根导航器切换回 CupertinoTabView 的事实有某种关系。
知道如何解决吗?
【问题讨论】:
标签:
flutter
flutter-navigation
【解决方案1】:
你应该添加这个:
@override
void didChangeDependencies() {
super.didChangeDependencies();
// add this
routeObserver.subscribe(this, ModalRoute.of(context));
}
@override
void dispose() {
routeObserver.unsubscribe(this);
super.dispose();
}
final RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();
...
MaterialApp(
navigatorObservers: [routeObserver],