Flutter入门系列连载:
首先什么是路由,路由对于移动开发者来说就是页面,比如对于我们Android开发者来说就是 Activity A-> ActivityB,类似ios中的 ViewController。
而人们常常说起的路由管理,就是管理页面之间如何跳转,通常也可被称为导航管理。
例如:
MaterialPageRoute 继承自 PageRoute类,是 Material 组件库提供的组件,针对不同平台,其有不同的路由动画效果。
其中PageRoute 是一个抽象类,表示占有整个屏幕空间的一个模态路由页面,其定义了路由构建及切换过渡动画的接口及属性。
MaterialPageRoute({
WidgetBuilder builder,
RouteSettings settings,
bool maintainState = true,
bool fullscreenDialog = false,
})
MaterialPageRoute对于不同平台,定义了不同的路由动画效果。
如果想自定义路由动画,可以继承 PageRoute 来实现。
Navigator 是一个路由导航组件,提供了打开和退出路由的方法,Navigator 内部通过栈来管理活动路由集合。通常当前屏幕显示的页面就是栈顶路由。Navigator 提供了一系列方法来管理路由栈。
Navigator 类中第一个参数为 context 的静态方法 都对应着一个 Navigaor 的实例方法.比如:
Navigator.push(BuildContext context,Route route)
//等同于
Navigator.of(context).push(Route route)
用于在路由跳转时携带一些参数,比如打开某个新闻详情页时,我们需要携带 新闻id,这样才能具体知道显示什么。
接收端
onPressed: () async {
var result = await Navigator.push<String>(context,
MaterialPageRoute(builder: (context) {
return xxxWidget();
}));
//result即为回传的数据
},
发送端
Navigator.of(context).pop("我是返回的数据");
Flutter实战-书籍