onPressed: () {
//导航到新路由
Navigator.push(context, MaterialPageRoute(builder: (context) {
return NewRoute();
}));
},
)
],
}
运行后效果如下:
点击蓝色按钮之后:
在上面新建一个页面的时候,我们可以知道 Navigator
相当于路由栈。
我们向其中push一个 MaterialPageRoute(context,build)
。
MaterialPageRoute
继承自 PageRoute
类,PageRoute类是一个抽象类,表示占有整个屏幕空间的一个模态路由页面,还定义了过渡动画的接口和属性。MaterialPageRoute
是一个组件,它可以针对不同的平台,实现与平台风格一致的路由切换动画。
我们来看看其构造函数的可选参数:
MaterialPageRoute({
WidgetBuilder builder,
RouteSettings settings,
bool maintainState = true,
bool fullscreenDialog = false,
})
- WidgetBuilder
它是一个回调函数,作用是构建路由页面的具体内容,返回值是一个widget,而路由器的实例正是一个Widget,所以我们传入新路由的构造函数,其实就是去创建这个路由
- RouteSettings
包含路由的配置信息,如路由名称、是否初始路由(首页)
- maintainState
默认情况下,当入栈一个新路由时,原来的路由仍然会被保存在内存中,如果想在路由没用的时候释放其占用的所有资源,可以设置 maintainState
为false
- fullscreenDialog
表示新的路由是否是一个全屏的对话框。
Navigator
是一个路由管理的组件,它提供了打开和退出路由的方法。它维护一个栈,管理活动路由集合。通常当前屏幕显示的页面就是栈顶的路由。
这里我们介绍最常用的两个方法:
1.Future push(BuildContext context, Route route)
将给定的路由入栈(即打开新的页面),返