在没有上下文的地方调用Navigator.of吗?

时间:2019-06-09 14:24:13

标签: flutter dart

我一直基于此精彩的教程(https://medium.com/coding-with-flutter/flutter-case-study-multiple-navigators-with-bottomnavigationbar-90eb6caa6dbf)设置选项卡式导航应用程序。

现在,我想显示一个覆盖整个屏幕的模式覆盖登录路线。我的登录控制器检查用户是否已登录,我想触发一个出现模式登录路由的事件。我现在遇到的问题是,我没有上下文对象,无法在其中接收显示登录路由的信号:

Navigator.of(context).pushReplacementNamed('/');

我该如何解决?这是错误的方法吗?

我的用户控制器是一个单例对象,该对象在应用程序启动时启动。然后,它检查用户数据模型,如果未设置,则要调用登录屏幕/路由。

感谢任何指向正确方向的指针。 马丁

2 个答案:

答案 0 :(得分:1)

您可以使用此包跳过所需的上下文。 https://pub.dev/packages/one_context

// go to second page using named route
OneContext().pushNamed('/second');
// go to second page using MaterialPageRoute
OneContext().push(MaterialPageRoute(builder: (_) => SecondPage()));

答案 1 :(得分:0)

您可以使用globalKey来访问您喜欢的小部件的上下文(您必须将其传递给构造函数中的一个键),并将其保留在全局空间中,或者在任何类中都是静态的。 虽然不是最优雅的方法,但应该可以