1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# 方式一,手动调用Navigator方法:
# 或 Navigator.of(context).push ...
Navigator.push(context,
MaterialPageRoute(builder: (BuildContext context) {
# 对应的页面参数这里这里传
return PasswordPage(cb: _passChanged,);
})
);
# 方式默认,用Navigator.pushNamed方法:
# 通过onGenerateRoute, onUnknownRoute,navigatorObservers可以监听路边变化
MaterialApp(
routes:{
"new_page":(context) => NewRoute(),
... // 省略其它路由注册信息
},
initialRoute: '/'
onGenerateRoute:(RouteSettings settings){
return MaterialPageRoute(builder: (context){
String routeName = settings.name;
// 如果访问的路由页需要登录,但当前未登录,则直接返回登录页路由,
// 引导用户登录;其它情况则正常打开路由。
}
),
onUnknownRoute: xx
navigatorObservers = xxx,
);
# 通过Navigator.pushNamed路由参数值传值
Navigator.of(context).pushNamed("new_page", arguments: "hi");
...
@override
Widget build(BuildContext context) {
//获取路由参数
var args=ModalRoute.of(context).settings.arguments;
//...省略无关代码
}
|