路由
静态路由
在相应MaterialApp组件内定义Route,再在需要跳转的地方用以下方法跳转。1
2
3
4
5
6
7
8
9
10
11定义:
return MaterialApp(
// 命名路由,无法动态传参
routes: <String, WidgetBuilder>{
'/search': (BuildContext context) => SearchWidget(),
},
);
跳转:
onPressed: () => Navigator.of(context).pushNamed('/search')
或
onPressed: () => Navigator.pushNamed(context, '/search')动态路由
不需要定义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跳转:
Navigator.push(context, MaterialPageRoute(builder: (_){
return TestRoute(title: '传参');
}));
或
Navigator.of(context).push(MaterialPageRoute(builder: (_){
return TestRoute(title: '传参');
}));
接收:
接收组件需为动态组件
class TestRoute extends StatefulWidget {
final String title; // 储存传递过来的参数
TestRoute({this.title}); // 本页面的构造器,接收传递过来的参数
_TestRouteState createState() => _TestRouteState();
}
class _TestRouteState extends State<TestRoute> {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title), // 使用
),
);
}