route.dart
8.91 KB
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:wow_english/app/splash_page.dart';
import 'package:wow_english/common/pages/wow_web_page.dart';
import 'package:wow_english/pages/home/home_page.dart';
import 'package:wow_english/pages/lessons/lesson_page.dart';
import 'package:wow_english/pages/listen/listen_page.dart';
import 'package:wow_english/pages/login/forgetpwd/forget_password_home_page.dart';
import 'package:wow_english/pages/login/loginpage/login_page.dart';
import 'package:wow_english/pages/login/setpwd/set_pwd_page.dart';
import 'package:wow_english/pages/practice/topic_picture_page.dart';
import 'package:wow_english/pages/repeatafter/repeat_after_page.dart';
import 'package:wow_english/pages/repeataftercontent/repeat_after_content_page.dart';
import 'package:wow_english/pages/shop/exchane/exchange_lesson_page.dart';
import 'package:wow_english/pages/shop/exchangelist/exchange_lesson_list_page.dart';
import 'package:wow_english/pages/shop/home/shop_home_page.dart';
import 'package:wow_english/pages/tab/tab_page.dart';
import 'package:wow_english/pages/user/information/user_information_page.dart';
import 'package:wow_english/pages/user/modify/modify_user_avatar_page.dart';
import 'package:wow_english/pages/user/modify/modify_user_information_page.dart';
import 'package:wow_english/pages/user/setting/setting_page.dart';
import 'package:wow_english/pages/user/user_page.dart';
import 'package:wow_english/pages/video/lookvideo/look_video_page.dart';
import '../pages/reading/reading_page.dart';
import '../pages/user/setting/delete_account_page.dart';
import '../pages/user/setting/reback_page.dart';
class AppRouteName {
static const String splash = 'splash';
static const String login = 'login';
static const String home = 'home';
static const String fogPwd = 'fogPwd';
/// 设置密码,修改密码;不要自己调用,使用[SetPassWordPage.push]方法,隐藏这种实现
//static const String setPwd = 'setPwd';
static const String webView = 'webView';
static const String lesson = 'lesson';
static const String listen = 'listen';
static const String shop = 'shop';
static const String exLesson = 'exLesson';
static const String exList = 'exList';
static const String reAfter = 'reAfter';
static const String topicPic = 'topicPic';
static const String user = 'user';
/// 用户详细信息页
static const String userInformation = 'userInformation';
/// 修改用户头像
static const String userAvatar = 'userAvatar';
/// 用户修改信息页,不要自己调用,使用[ModifyUserInformationPage.push]方法,隐藏这种实现
//static const String userModifyInformation = 'userModifyInformation';
///看视频
static const String lookVideo = 'lookVideo';
///绘本
static const String reading = 'reading';
///视频跟读详情
static const String readAfterContent = 'readAfterContent';
///设置
static const String setting = 'setting';
///注销账号
static const String deleteAccount = 'deleteAccount';
///帮助与反馈
static const String reBack = 'reBack';
static const String tab = '/';
}
class AppRouter {
static final navigatorKey = GlobalKey<NavigatorState>();
// App 根节点Context
static BuildContext get context => navigatorKey.currentContext!;
static Route<dynamic> generateRoute(RouteSettings settings) {
switch (settings.name) {
case AppRouteName.splash:
return PageRouteBuilder(
opaque: false,
pageBuilder: (_, __, ___) => const SplashPage(),
transitionDuration: Duration.zero,
transitionsBuilder: (_, __, ___, child) => child);
case AppRouteName.login:
return CupertinoPageRoute(builder: (_) => const LoginPage());
case AppRouteName.home:
var moduleId = '';
if (settings.arguments != null) {
moduleId = (settings.arguments as Map)['moduleId'] as String;
}
return CupertinoPageRoute(
builder: (_) => HomePage(
moduleId: moduleId,
));
case AppRouteName.fogPwd:
return CupertinoPageRoute(builder: (_) => const ForgetPasswordHomePage());
case AppRouteName.lesson:
return CupertinoPageRoute(builder: (_) => const LessonPage());
case AppRouteName.listen:
return CupertinoPageRoute(builder: (_) => const ListenPage());
case AppRouteName.shop:
return CupertinoPageRoute(builder: (_) => const ShopHomePage());
case AppRouteName.exLesson:
return CupertinoPageRoute(builder: (_) => const ExchangeLessonPage());
case AppRouteName.exList:
return CupertinoPageRoute(builder: (_) => const ExchangeLessonListPage());
case AppRouteName.reAfter:
return CupertinoPageRoute(builder: (_) => const RepeatAfterPage());
case AppRouteName.user:
return CupertinoPageRoute(builder: (_) => const UserPage());
case AppRouteName.userInformation:
return CupertinoPageRoute(builder: (_) => const UserInformationPage());
case AppRouteName.userAvatar:
var pageType = 0;
if (settings.arguments != null) {
final content = (settings.arguments as Map)['pageType'] as String;
pageType = int.parse(content);
}
return CupertinoPageRoute(
builder: (_) => ModifyUserAvatarPage(
pageType: pageType,
));
/*case AppRouteName.userModifyInformation:
return CupertinoPageRoute(builder: (_) {
ModifyUserInformationType argument = ModifyUserInformationType.name;
if (settings.arguments != null) {
argument = settings.arguments as ModifyUserInformationType;
}
return ModifyUserInformationPage(type: argument);
});*/
case AppRouteName.topicPic:
var courseLessonId = '';
if (settings.arguments != null) {
courseLessonId = (settings.arguments as Map)['courseLessonId'] as String;
}
return CupertinoPageRoute(builder: (_) => TopicPicturePage(courseLessonId: courseLessonId));
case AppRouteName.lookVideo:
final videoUrl = (settings.arguments as Map)['videoUrl'] as String;
final title = (settings.arguments as Map)['title'] as String?;
final courseLessonId = (settings.arguments as Map)['courseLessonId'] as String?;
return CupertinoPageRoute(
builder: (_) => LookVideoPage(
videoUrl: videoUrl,
typeTitle: title,
courseLessonId: courseLessonId,
));
/*case AppRouteName.setPwd:
case AppRouteName.setPwd:
phoneNum: phoneNum,
smsCode: smsCode,
pageType: pageType,
));*/
case AppRouteName.webView:
final urlStr = (settings.arguments as Map)['urlStr'] as String;
final webViewTitle = (settings.arguments as Map)['webViewTitle'] as String;
return CupertinoPageRoute(
builder: (_) => WowWebViewPage(
urlStr: urlStr,
webViewTitle: webViewTitle,
));
case AppRouteName.readAfterContent:
var videoFollowReadId = '';
if (settings.arguments != null) {
videoFollowReadId = (settings.arguments as Map)['videoFollowReadId'] as String;
}
return CupertinoPageRoute(builder: (_) => RepeatAfterContentPage(videoFollowReadId: videoFollowReadId));
case AppRouteName.setting:
return CupertinoPageRoute(builder: (_) => const SettingPage());
case AppRouteName.deleteAccount:
return CupertinoPageRoute(builder: (_) => const DeleteAccountPage());
case AppRouteName.reBack:
return CupertinoPageRoute(builder: (_) => const ReBackPage());
case AppRouteName.tab:
return PageRouteBuilder(
opaque: false,
settings: const RouteSettings(name: AppRouteName.tab),
transitionDuration: Duration.zero,
pageBuilder: (_, __, ___) => const TabPage(),
transitionsBuilder: (_, __, ___, child) => child);
case AppRouteName.reading:
var courseLessonId = '';
if (settings.arguments != null) {
courseLessonId = (settings.arguments as Map)['courseLessonId'] as String;
}
return CupertinoPageRoute(builder: (_) => ReadingPage(courseLessonId: courseLessonId));
default:
return CupertinoPageRoute(
builder: (_) => Scaffold(body: Center(child: Text('No route defined for ${settings.name}'))));
}
}
}
Future pushNamed(String routeName, {Object? arguments}) {
return Navigator.of(AppRouter.context).pushNamed(routeName, arguments: arguments).then((value) {
return value;
});
}
Future pushNamedAndRemoveUntil(String routeName, RoutePredicate predicate, {Object? arguments}) {
return Navigator.of(AppRouter.context).pushNamedAndRemoveUntil(routeName, predicate, arguments: arguments);
}
void popPage({dynamic data}) {
Navigator.of(AppRouter.context).pop(data);
}