有时候我们需要根据关闭当前其他所有页面,跳转到某个页面,可以这样处理:
Navigator.of(context).pushAndRemoveUntil(
new MaterialPageRoute(builder: (context) => new LoginPage()),
(route) => route == null);
那么问题来了,如果在page页面有buildcontext可以这样处理,但是在一些没有conext上下文的地方如何处理呢,这里就需要设置一个全局context,用到一个NavigatorState类了,代码如下:
class Global{
//全局路由跳转上下文,可去除contex
static final navKey = GlobalKey<NavigatorState>();
}
在main.dart里面定义
return new MaterialApp(
navigatorKey: Global.navKey, )
这样我们就可以随时随地的调用了:
Global.navKey.currentState.pushAndRemoveUntil(
new MaterialPageRoute(builder: (context) => new LoginPage()),
(route) => route == null);
顺便说下,new LoginPage()会执行登录页面的initstate(), (route) => route == null)会将所有其他页面关闭,同时执行他们的dispose()方法。