我正在使用 auto_route 进行导航。我已将应用程序从旧的 Flutter 版本更新为 Flutter 3。应用程序导航可与上下文配合使用,但我想使用路径或命名路由进行导航。它不起作用,因为 navigatorKey 为 null 并且我无法访问 currentState。
我正在做的是:
class GlobalKeys{
final GlobalKey<NavigatorState> navigatorKey = new GlobalKey<NavigatorState>();
}
但我不确定在主文件的 MaterialApp.router 中的哪里提供这个。我尝试过类似下面的方法:
MaterialApp.router(
key: GlobalKeys.navigatorKey,
)
我的 currentState 为 null,因此我无法导航
dynamic redirectTo(String path) async {
navigatorKey.currentState!.pushNamed('$path');
}
作为 auto_route 包提供的另一个解决方案,我也尝试了下面的代码,但它什么也没做,因为它执行了语句,但没有任何反应。它甚至不会抛出任何错误。
getIt<AppRouter>().pushNamed('$path');
您应该使用 navigatorKey 属性而不是 key 属性。但不幸的是 navigatorKey 在 MaterialApp.router() 构造函数中不可用。它可以在 MaterialApp() 构造函数中使用。