如何在应用程序导航器中观察新的导航器?

时间:2019-04-08 20:46:50

标签: dart flutter

我在应用程序主导航器中有一个新的导航器,并且我想观察新的导航器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();
  }

1 个答案:

答案 0 :(得分:0)

观察主导航器事件而不是创建主导航器事件的原因是,您指出了错误所在的行。

onInit: (store) => _routeObserver.subscribe(this, ModalRoute.of(context))

您在此处传递的context是在build()中构建Navigator的小部件。

这意味着它位于您在小部件树中创建的导航器的上方。因此,您将获得主要Navigatot的活动