我一直基于此精彩的教程(https://medium.com/coding-with-flutter/flutter-case-study-multiple-navigators-with-bottomnavigationbar-90eb6caa6dbf)设置选项卡式导航应用程序。
现在,我想显示一个覆盖整个屏幕的模式覆盖登录路线。我的登录控制器检查用户是否已登录,我想触发一个出现模式登录路由的事件。我现在遇到的问题是,我没有上下文对象,无法在其中接收显示登录路由的信号:
Navigator.of(context).pushReplacementNamed('/');
我该如何解决?这是错误的方法吗?
我的用户控制器是一个单例对象,该对象在应用程序启动时启动。然后,它检查用户数据模型,如果未设置,则要调用登录屏幕/路由。
感谢任何指向正确方向的指针。 马丁
答案 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来访问您喜欢的小部件的上下文(您必须将其传递给构造函数中的一个键),并将其保留在全局空间中,或者在任何类中都是静态的。 虽然不是最优雅的方法,但应该可以