我在应用程序主导航器中有一个新的导航器,并且我想观察新的导航器push和pop方法,但是似乎观察者回调仅针对主导航器而不是新导航器进行调用。我该如何解决?
初始化:
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
RouteAware混合代表:
@override
void didPop() {
_routeState--;
super.didPopNext();
}
@override
void didPush() {
_routeState++;
super.didPushNext();
}
答案 0 :(得分:0)
观察主导航器事件而不是创建主导航器事件的原因是,您指出了错误所在的行。
onInit: (store) => _routeObserver.subscribe(this, ModalRoute.of(context))
您在此处传递的context
是在build()中构建Navigator
的小部件。
这意味着它位于您在小部件树中创建的导航器的上方。因此,您将获得主要Navigatot的活动