Flutter 路由
第一点:push使用
1.pushNamed——Navigator.of(context).pushNamed('routeName');
此种方法只是简单的将我们需要进入的页面push到栈顶,以此来显示当前页面,其参数是一个字符串类型,传入的是页面对应的路由名称
该路由名称需要在程序主入口中进行定义。定义方法为:
void main() {
runApp(
new MaterialApp(
home: new Screen1(),
routes: <String, WidgetBuilder> {
'/screen1': (BuildContext context) => new Screen1(),
'/screen2' : (BuildContext context) => new Screen2(),
'/screen3' : (BuildContext context) => new Screen3(),
},
)
);
}
使用:Navigator.of(context).pushNamed(’/screen1’); 直接进入screen1页面(每次都将新建一个新的页面)
pushReplacementNamed
2.1 pushReplacementNamed——Navigator.of(context).pushReplacementNamed('/screen4');
指把当前页面在栈中的位置替换成跳转的页面(替换导航器的当前路由,通过推送路由[routeName]),当新的页面进入后,之前的页面将执行dispose方法。
相当于StartActivity 并finish当前页面。
即比如当前从页面1进入页面2,在页面2使用
Navigator.of(context).pushReplacementNamed(’/screen3’);进入页面3,当进入了页面3后,页面2将执行dispose方法,此时在页面3返回时,会回到页面1.
2.2 pushReplacement——Navigator.pushReplacement( context, MaterialPageRoute(builder: (BuildContext context) => screen4()));
这个用法跟2.1相同,只是路由的传递有差别,上方的是传递路由名称(页面对应的名称,需在入口定义(本文第一点)),而后者只需new对应页面即可,而且可以传递
参数(传参方式类似于本文后续所说的传递方法)
Navigator管理的对象是Route,Flutter提供了MaterialPageRoute和iOS风格的CupertinoPageRoute,MaterialPageRoute是根据手机平台自动调整页面的出现动画。
https://www.jianshu.com/p/44650be76110