Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 627097c

Browse files
Navigator的封装,让使用更方便。
Navigator的封装,让使用更方便。
1 parent b309aa3 commit 627097c

File tree

2 files changed

+176
-0
lines changed

2 files changed

+176
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import 'dart:collection';
2+
3+
import 'package:flutter/material.dart';
4+
5+
6+
7+
class RouteManager{
8+
9+
BuildContext context;
10+
11+
// 管理路由的map
12+
Map<String, WidgetBuilder> routeManagerMap = {};
13+
14+
Map<String, Widget> routeMap = {};
15+
16+
// 构造函数
17+
RouteManager(this.context);
18+
19+
void pushNamed(String routeName){
20+
Navigator.of(context).pushNamed(routeName);
21+
}
22+
23+
// key是 发送路由的标记 Value是要跳转的页面
24+
putRoutesMap(Map<String, Widget> map){
25+
routeMap = map;
26+
}
27+
28+
_putRoutes(){
29+
routeMap.forEach((routeName, targetPage){
30+
routeManagerMap[routeName] = (BuildContext context) => targetPage;
31+
});
32+
}
33+
34+
35+
Map<String, WidgetBuilder> getRoutes(){
36+
return routeManagerMap;
37+
}
38+
39+
40+
}
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
import 'package:flutter/material.dart';
2+
import 'navigator_util.dart';
3+
4+
void main() => runApp(MyApp());
5+
6+
7+
8+
9+
RouteManager manager;
10+
void data(BuildContext context){
11+
manager = new RouteManager(context);
12+
13+
Map<String,Widget> routes = {
14+
'/data2':Page2(),
15+
'/data3':Page3(),
16+
'/data4':Page4(),
17+
};
18+
manager.putRoutesMap(routes);
19+
}
20+
21+
22+
RouteManager getData(){
23+
return manager;
24+
}
25+
26+
27+
class MyApp extends StatelessWidget {
28+
29+
30+
@override
31+
Widget build(BuildContext context) {
32+
33+
data(context);
34+
35+
return MaterialApp(
36+
title: 'Flutter Demo',
37+
theme: ThemeData(
38+
primarySwatch: Colors.blue,
39+
),
40+
home: MyHomePage(title: 'Flutter Demo Home Page'),
41+
// 让路由管理更方便一些
42+
routes: getData().getRoutes(),
43+
);
44+
}
45+
}
46+
47+
class MyHomePage extends StatefulWidget {
48+
MyHomePage({Key key, this.title}) : super(key: key);
49+
50+
final String title;
51+
52+
@override
53+
_MyHomePageState createState() => _MyHomePageState();
54+
}
55+
56+
class _MyHomePageState extends State<MyHomePage> {
57+
58+
@override
59+
Widget build(BuildContext context) {
60+
return Scaffold(
61+
appBar: AppBar(
62+
title: Text(widget.title),
63+
),
64+
body: Center(
65+
child: Column(
66+
mainAxisAlignment: MainAxisAlignment.center,
67+
children: <Widget>[
68+
RaisedButton(
69+
onPressed: (){
70+
//Navigator.of(context).pushNamed('/data2');
71+
getData().pushNamed('/data2');
72+
},
73+
child: Text('打开Page2'),
74+
),
75+
RaisedButton(
76+
onPressed: (){
77+
//Navigator.of(context).pushNamed('/data3');
78+
getData().pushNamed('/data3');
79+
},
80+
child: Text('打开Page3'),
81+
),
82+
RaisedButton(
83+
onPressed: (){
84+
//Navigator.of(context).pushNamed('/data4');
85+
getData().pushNamed('/data4');
86+
},
87+
child: Text('打开Page4'),
88+
),
89+
],
90+
),
91+
),
92+
floatingActionButton: FloatingActionButton(
93+
onPressed: (){},
94+
tooltip: 'Increment',
95+
child: Icon(Icons.add),
96+
),
97+
);
98+
}
99+
}
100+
101+
102+
class Page2 extends StatefulWidget {
103+
@override
104+
_Page2State createState() => _Page2State();
105+
}
106+
107+
class _Page2State extends State<Page2> {
108+
@override
109+
Widget build(BuildContext context) {
110+
return Text('hello');
111+
}
112+
}
113+
114+
class Page3 extends StatefulWidget {
115+
@override
116+
_Page3State createState() => _Page3State();
117+
}
118+
119+
class _Page3State extends State<Page3> {
120+
@override
121+
Widget build(BuildContext context) {
122+
return Text('hello');
123+
}
124+
}
125+
126+
class Page4 extends StatefulWidget {
127+
@override
128+
_Page4State createState() => _Page4State();
129+
}
130+
131+
class _Page4State extends State<Page4> {
132+
@override
133+
Widget build(BuildContext context) {
134+
return Text('hello');
135+
}
136+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /