我在应用程序主导航器中有新的导航器,我想观察新的导航器推送和弹出方法,但似乎观察者回调只调用主导航器而不是新的导航器。我该怎么办呢?
初始化:
final GlobalKey<NavigatorState> newNavigatorKey = GlobalKey<NavigatorState>();
final RouteObserver<PageRoute> _routeObserver = RouteObserver<PageRoute>();
onInit: (store) => _routeObserver.subscribe(this, ModalRoute.of(context)),//I think problem is from this line
取消订阅:
onDispose: (store) => _routeObserver.unsubscribe(this)
新导航器:
Navigator(
key: newNavigatorKey,
observers: [_routeObserver],
onGenerateRoute: (routeSettings) {
return MaterialPageRoute(
builder: (context) =>
routs[routeSettings.name],
);
})
容器类:
class CategoryNavigator extends StatelessWidget with RouteAware
route aware迷信delegates:
@override
void didPop() {
_routeState--;
super.didPopNext();
}
@override
void didPush() {
_routeState++;
super.didPushNext();
}
您正在观察主导航器事件而不是您创建的事件的原因是,因为您指出了错误所在的行。
onInit: (store) => _routeObserver.subscribe(this, ModalRoute.of(context))
你在这里传递的context
是在它的build()中构建Navigator
的小部件。
这意味着它位于您在窗口小部件树中创建的Navigator之上。因此,您将获得主Navigatot的活动