route.dart
4.33 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
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/home/home_page.dart';
import 'package:wow_english/lessons/lesson_page.dart';
import 'package:wow_english/listen/listen_page.dart';
import 'package:wow_english/login/forgetpwd/forget_password_home_page.dart';
import 'package:wow_english/login/loginpage/login_page.dart';
import 'package:wow_english/login/setpwd/set_pwd_page.dart';
import 'package:wow_english/practice/chosetopic/topicpicture/topic_picture_page.dart';
import 'package:wow_english/practice/chosetopic/topicword/topic_word_page.dart';
import 'package:wow_english/repeatafter/repeat_after_page.dart';
import 'package:wow_english/shop/exchane/exchange_lesson_page.dart';
import 'package:wow_english/shop/exchangelist/exchange_lesson_list_page.dart';
import 'package:wow_english/shop/home/shop_home_page.dart';
import 'package:wow_english/tab/tab_page.dart';
class AppRouteName {
static const String splash = 'splash';
static const String login = 'login';
static const String home = 'home';
static const String fogPwd = 'fogPwd';
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 topicWord = 'topicWord';
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:
return CupertinoPageRoute(builder: (_) => const HomePage());
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.topicPic:
return CupertinoPageRoute(builder: (_) => const TopicPicturePage());
case AppRouteName.topicWord:
return CupertinoPageRoute(builder: (_) => const TopicWordPage());
case AppRouteName.setPwd:
final phoneNum = (settings.arguments as Map)['phoneNumber'] as String;
return CupertinoPageRoute(builder: (_) => SetPassWordPage(phoneNum: phoneNum));
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.tab:
return PageRouteBuilder(
opaque: false,
settings: const RouteSettings(name: AppRouteName.tab),
transitionDuration: Duration.zero,
pageBuilder: (_,__,___) => const TabPage(),
transitionsBuilder: (_, __, ___, child) => child);
default:
return CupertinoPageRoute(
builder: (_) => Scaffold(
body: Center(
child: Text('No route defined for ${settings.name}'))));
}
}
}