路由管理
路由(Route)
在移动开发中通常指页面(Page)
,Route
在Android
中通常指一个Activity
。所谓路由管理,就是管理页面之间如何跳转,通常也可被称为导航管理。导航管理会维护一个路由栈,路由入栈(push)
操作对应打开一个新页面,路由出栈(pop)
操作对应页面关闭操作,而路由管理主要是指如何来管理路由栈。
一个简单示例
1. 创建一个新路由
class NewRoute extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text("New Route")),
body: new Center(
child: new Text("This is a new Route"),
),
);
}
}
2. 在上个界面中添加一个按钮
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
...// 省略部分代码
new FlatButton(
child: new Text("Open a new Route"),
textColor: Colors.blue,
onPressed: () {
// 导航到新路由
Navigator.push(context, MaterialPageRoute(builder: (context){
return new NewRoute();
}));
},
),
],
)
MaterialPageRoute
MaterialPageRoute
继承自PageRoute
类,PageRoute
类是一个抽象类,表示占有整个屏幕空间的一个模态路由页面,它还定义了路由构建及切换时过渡动画的相关接口及属性。MaterialPageRoute
是Material
组件库提供的组件,它可以针对不同的平台,实现与平台页面切换动画风格一致的路由切换动画:
- 对于
Android
,当打开新页面时,新的页面会从屏幕的底部滑动到屏幕顶部;当关闭页面时,当前页面会从屏幕顶部滑动到屏幕底部后消失,同时上一个页面会显示到屏幕上。
MaterialPageRoute
构造函数的各个参数的意义:
MaterialPageRoute({
WidgetBuilder builder,
RouteSettings settings,
bool maintainState = true,
bool fullscreenDialog = false,
})
-
builder
是一个WidgetBuilder
类型的回调函数,它的作用是构建路由页面的具体内容,返回值是一个widget
。我们通常要实现此回调,返回新路由的实例。 -
settings
包含路由的配置信息,如路由名称,是否初始路由(首页)。
Navigator
Navigator是一个路由管理的组件,它提供了打开和退出路由页方法。Navigator通过一个栈来管理活动路由集合。通常当前屏幕显示的页面就是栈顶的路由。Navigator提供了一系列方法来管理路由栈,在此我们只介绍其最常用的两个方法:
-
static Future push(BuildContext context, Route route)
将给定的路由入栈,返回值是一个Future对象,用以接收新路由出栈时的返回数据。 -
static bool pop(BuildContext context, [ result ])
将栈顶路由出栈,result为页面关闭时返回给上一个页面的数据。
网友评论