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

问题描述 投票:1回答:1

我在应用程序主导航器中有新的导航器,我想观察新的导航器推送和弹出方法,但似乎观察者回调只调用主导航器而不是新的导航器。我该怎么办呢?

初始化:

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();
  }
dart flutter
1个回答
0
投票

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

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

你在这里传递的context是在它的build()中构建Navigator的小部件。

这意味着它位于您在窗口小部件树中创建的Navigator之上。因此,您将获得主Navigatot的活动

© www.soinside.com 2019 - 2024. All rights reserved.