2019-06-27
管理多个页面时有两个核心概念和类:Route和 Navigator。 一个route是一个屏幕或页面的抽象,Navigator是管理route的Widget。Navigator可以通过route入栈和出栈来实现页面之间的跳转。所谓路由管理,就是管理页面之间如何跳转,通常也可被称为导航管理。这和原生开发类似,无论是Android还是iOS,导航管理都会维护一个路由栈,路由入栈(push)操作对应打开一个新页面,路由出栈(pop)操作对应页面关闭操作,而路由管理主要是指如何来管理路由栈。
示例
比如我们想要从A界面打开B界面,并且从B界面返回时需要携带数据给A界面,我们可以这么写
Navigator.push(context, MaterialPageRoute(builder: (context) {
return SaveImageWidget();
})).then((onValue) {
print(onValue);
});
当我们从B界面返回的时候
Navigator.of(context).pop("B界面返回的数据");
MaterialPageRoute
继承自PageRoute
类,PageRoute
类是一个抽象类,表示占有整个屏幕空间的一个模态路由页面,它还定义了路由构建及切换时过渡动画的相关接口及属性。
Navigator
Navigator
是一个路由管理的widget,它通过一个栈来管理一个路由widget集合。通常当前屏幕显示的页面就是栈顶的路由。方法大致分为两种:push:打开新页面,包括pushAndRemoveUntil
,pushNamed
,pushNamedAndRemoveUntil
,pushReplacement
,pushReplacementNamed
,