Blame view

lib/route/route.dart 9.08 KB
2a29701f   liangchengyou   feat:提交代码
1
2
  import 'package:flutter/cupertino.dart';
  import 'package:flutter/material.dart';
a117a5a3   liangchengyou   feat:更新代码
3
  import 'package:wow_english/app/splash_page.dart';
bfb40cd0   liangchengyou   feat:忘记密码获取验证码
4
  import 'package:wow_english/common/pages/wow_web_page.dart';
4b358e22   liangchengyou   feat:调整文件结构
5
6
7
8
9
10
  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';
842b7132   liangchengyou   feat:磨耳朵/练习页面调整
11
  import 'package:wow_english/pages/practice/topic_picture_page.dart';
4b358e22   liangchengyou   feat:调整文件结构
12
  import 'package:wow_english/pages/repeatafter/repeat_after_page.dart';
08a0f5a8   liangchengyou   feat:路由方式更新
13
  import 'package:wow_english/pages/repeataftercontent/repeat_after_content_page.dart';
4b358e22   liangchengyou   feat:调整文件结构
14
15
16
17
  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';
da82bd70   Key   feat: user_inform...
18
  import 'package:wow_english/pages/user/information/user_information_page.dart';
c948a9ea   liangchengyou   feat:个人信息更改模块功能
19
  import 'package:wow_english/pages/user/modify/modify_user_avatar_page.dart';
c9df43c8   Key   feat: 修改个人信息、接口
20
  import 'package:wow_english/pages/user/modify/modify_user_information_page.dart';
3840b7fe   liangchengyou   feat:更新设置页面
21
  import 'package:wow_english/pages/user/setting/setting_page.dart';
4b358e22   liangchengyou   feat:调整文件结构
22
23
  import 'package:wow_english/pages/user/user_page.dart';
  import 'package:wow_english/pages/video/lookvideo/look_video_page.dart';
4b358e22   liangchengyou   feat:调整文件结构
24
  
2a427e12   吴启风   feat:绘本静态ui基本完成
25
  import '../pages/reading/reading_page.dart';
4224b3f8   吴启风   feat:支付详情页ui
26
  import '../pages/shopping/view.dart';
3840b7fe   liangchengyou   feat:更新设置页面
27
28
  import '../pages/user/setting/delete_account_page.dart';
  import '../pages/user/setting/reback_page.dart';
2a427e12   吴启风   feat:绘本静态ui基本完成
29
  
2a29701f   liangchengyou   feat:提交代码
30
31
32
  class AppRouteName {
    static const String splash = 'splash';
    static const String login = 'login';
95edef4f   liangchengyou   feat:更新适配代码
33
    static const String home = 'home';
4bf67b91   liangchengyou   feat:设置密码
34
    static const String fogPwd = 'fogPwd';
c61b3c1a   Key   feat: toast_util....
35
  
c9df43c8   Key   feat: 修改个人信息、接口
36
37
    /// 设置密码,修改密码;不要自己调用,使用[SetPassWordPage.push]方法,隐藏这种实现
    //static const String setPwd = 'setPwd';
bfb40cd0   liangchengyou   feat:忘记密码获取验证码
38
    static const String webView = 'webView';
60e47f7c   liangchengyou   feat:课程选择功能
39
    static const String lesson = 'lesson';
d35a4e87   liangchengyou   feat:磨耳朵功能UI
40
    static const String listen = 'listen';
d1d32220   liangchengyou   feat:兑换课程+购买记录
41
42
43
    static const String shop = 'shop';
    static const String exLesson = 'exLesson';
    static const String exList = 'exList';
9d080046   liangchengyou   feat:视频跟读逻辑
44
    static const String reAfter = 'reAfter';
624214d0   liangchengyou   feat:看题选字/选图UI和部分逻辑
45
    static const String topicPic = 'topicPic';
22b7d4da   Key   feat: user, api path
46
    static const String user = 'user';
4224b3f8   吴启风   feat:支付详情页ui
47
    static const String pay = 'pay';
da82bd70   Key   feat: user_inform...
48
49
50
  
    /// 用户详细信息页
    static const String userInformation = 'userInformation';
c948a9ea   liangchengyou   feat:个人信息更改模块功能
51
52
    /// 修改用户头像
    static const String userAvatar = 'userAvatar';
c9df43c8   Key   feat: 修改个人信息、接口
53
54
55
  
    /// 用户修改信息页,不要自己调用,使用[ModifyUserInformationPage.push]方法,隐藏这种实现
    //static const String userModifyInformation = 'userModifyInformation';
08a0f5a8   liangchengyou   feat:路由方式更新
56
    ///看视频
119ba920   liangchengyou   feat:视频播放器
57
    static const String lookVideo = 'lookVideo';
08a0f5a8   liangchengyou   feat:路由方式更新
58
    ///绘本
c61b3c1a   Key   feat: toast_util....
59
    static const String reading = 'reading';
08a0f5a8   liangchengyou   feat:路由方式更新
60
61
62
    ///视频跟读详情
    static const String readAfterContent = 'readAfterContent';
  
3840b7fe   liangchengyou   feat:更新设置页面
63
64
65
66
67
68
69
    ///设置
    static const String setting = 'setting';
    ///注销账号
    static const String deleteAccount = 'deleteAccount';
    ///帮助与反馈
    static const String reBack = 'reBack';
  
2a29701f   liangchengyou   feat:提交代码
70
71
72
73
74
    static const String tab = '/';
  }
  
  class AppRouter {
    static final navigatorKey = GlobalKey<NavigatorState>();
94342c3f   Key   feat: user util
75
  
2a29701f   liangchengyou   feat:提交代码
76
77
    // App 根节点Context
    static BuildContext get context => navigatorKey.currentContext!;
22b7d4da   Key   feat: user, api path
78
  
2a29701f   liangchengyou   feat:提交代码
79
80
81
82
83
    static Route<dynamic> generateRoute(RouteSettings settings) {
      switch (settings.name) {
        case AppRouteName.splash:
          return PageRouteBuilder(
              opaque: false,
94342c3f   Key   feat: user util
84
              pageBuilder: (_, __, ___) => const SplashPage(),
2a29701f   liangchengyou   feat:提交代码
85
86
87
              transitionDuration: Duration.zero,
              transitionsBuilder: (_, __, ___, child) => child);
        case AppRouteName.login:
94342c3f   Key   feat: user util
88
          return CupertinoPageRoute(builder: (_) => const LoginPage());
95edef4f   liangchengyou   feat:更新适配代码
89
        case AppRouteName.home:
8988aa69   liangchengyou   feat:首页+课程列表数据获取
90
91
92
93
          var moduleId = '';
          if (settings.arguments != null) {
            moduleId = (settings.arguments as Map)['moduleId'] as String;
          }
c61b3c1a   Key   feat: toast_util....
94
95
          return CupertinoPageRoute(
              builder: (_) => HomePage(
e55bbdf3   Key   fixed: aliyun oss...
96
97
                    moduleId: moduleId,
                  ));
4bf67b91   liangchengyou   feat:设置密码
98
        case AppRouteName.fogPwd:
94342c3f   Key   feat: user util
99
          return CupertinoPageRoute(builder: (_) => const ForgetPasswordHomePage());
60e47f7c   liangchengyou   feat:课程选择功能
100
        case AppRouteName.lesson:
94342c3f   Key   feat: user util
101
          return CupertinoPageRoute(builder: (_) => const LessonPage());
d35a4e87   liangchengyou   feat:磨耳朵功能UI
102
        case AppRouteName.listen:
94342c3f   Key   feat: user util
103
          return CupertinoPageRoute(builder: (_) => const ListenPage());
d1d32220   liangchengyou   feat:兑换课程+购买记录
104
        case AppRouteName.shop:
94342c3f   Key   feat: user util
105
          return CupertinoPageRoute(builder: (_) => const ShopHomePage());
4224b3f8   吴启风   feat:支付详情页ui
106
107
        case AppRouteName.pay:
          return CupertinoPageRoute(builder: (_) => const ShoppingPage());
d1d32220   liangchengyou   feat:兑换课程+购买记录
108
        case AppRouteName.exLesson:
94342c3f   Key   feat: user util
109
          return CupertinoPageRoute(builder: (_) => const ExchangeLessonPage());
d1d32220   liangchengyou   feat:兑换课程+购买记录
110
        case AppRouteName.exList:
94342c3f   Key   feat: user util
111
          return CupertinoPageRoute(builder: (_) => const ExchangeLessonListPage());
9d080046   liangchengyou   feat:视频跟读逻辑
112
        case AppRouteName.reAfter:
94342c3f   Key   feat: user util
113
          return CupertinoPageRoute(builder: (_) => const RepeatAfterPage());
22b7d4da   Key   feat: user, api path
114
        case AppRouteName.user:
94342c3f   Key   feat: user util
115
          return CupertinoPageRoute(builder: (_) => const UserPage());
da82bd70   Key   feat: user_inform...
116
117
        case AppRouteName.userInformation:
          return CupertinoPageRoute(builder: (_) => const UserInformationPage());
c948a9ea   liangchengyou   feat:个人信息更改模块功能
118
119
120
        case AppRouteName.userAvatar:
          var pageType = 0;
          if (settings.arguments != null) {
934e2b47   liangchengyou   feat:权限调整+课程进度接口对接
121
            final content = (settings.arguments as Map)['pageType'] as String;
c948a9ea   liangchengyou   feat:个人信息更改模块功能
122
123
            pageType = int.parse(content);
          }
e55bbdf3   Key   fixed: aliyun oss...
124
125
126
127
128
          return CupertinoPageRoute(
              builder: (_) => ModifyUserAvatarPage(
                    pageType: pageType,
                  ));
        /*case AppRouteName.userModifyInformation:
c9df43c8   Key   feat: 修改个人信息、接口
129
130
131
132
133
134
135
          return CupertinoPageRoute(builder: (_) {
            ModifyUserInformationType argument = ModifyUserInformationType.name;
            if (settings.arguments != null) {
              argument = settings.arguments as ModifyUserInformationType;
            }
            return ModifyUserInformationPage(type: argument);
          });*/
624214d0   liangchengyou   feat:看题选字/选图UI和部分逻辑
136
        case AppRouteName.topicPic:
608c05b4   liangchengyou   feat:兑换课程
137
138
          var courseLessonId = '';
          if (settings.arguments != null) {
934e2b47   liangchengyou   feat:权限调整+课程进度接口对接
139
            courseLessonId = (settings.arguments as Map)['courseLessonId'] as String;
608c05b4   liangchengyou   feat:兑换课程
140
          }
e55bbdf3   Key   fixed: aliyun oss...
141
          return CupertinoPageRoute(builder: (_) => TopicPicturePage(courseLessonId: courseLessonId));
119ba920   liangchengyou   feat:视频播放器
142
        case AppRouteName.lookVideo:
993c1a04   liangchengyou   feat:添加数据模型
143
          final videoUrl = (settings.arguments as Map)['videoUrl'] as String;
842b7132   liangchengyou   feat:磨耳朵/练习页面调整
144
          final title = (settings.arguments as Map)['title'] as String?;
934e2b47   liangchengyou   feat:权限调整+课程进度接口对接
145
          final courseLessonId = (settings.arguments as Map)['courseLessonId'] as String?;
c61b3c1a   Key   feat: toast_util....
146
147
          return CupertinoPageRoute(
              builder: (_) => LookVideoPage(
934e2b47   liangchengyou   feat:权限调整+课程进度接口对接
148
149
150
151
                videoUrl: videoUrl,
                typeTitle: title,
                courseLessonId: courseLessonId,
              ));
e55bbdf3   Key   fixed: aliyun oss...
152
        /*case AppRouteName.setPwd:
cb38bc90   liangchengyou   feat:视频跟读逻辑处理
153
        case AppRouteName.setPwd:
c61b3c1a   Key   feat: toast_util....
154
155
156
                    phoneNum: phoneNum,
                    smsCode: smsCode,
                    pageType: pageType,
c9df43c8   Key   feat: 修改个人信息、接口
157
                  ));*/
bfb40cd0   liangchengyou   feat:忘记密码获取验证码
158
159
160
        case AppRouteName.webView:
          final urlStr = (settings.arguments as Map)['urlStr'] as String;
          final webViewTitle = (settings.arguments as Map)['webViewTitle'] as String;
94342c3f   Key   feat: user util
161
162
          return CupertinoPageRoute(
              builder: (_) => WowWebViewPage(
e55bbdf3   Key   fixed: aliyun oss...
163
164
165
                    urlStr: urlStr,
                    webViewTitle: webViewTitle,
                  ));
08a0f5a8   liangchengyou   feat:路由方式更新
166
        case AppRouteName.readAfterContent:
cb38bc90   liangchengyou   feat:视频跟读逻辑处理
167
168
          var videoFollowReadId = '';
          if (settings.arguments != null) {
934e2b47   liangchengyou   feat:权限调整+课程进度接口对接
169
            videoFollowReadId = (settings.arguments as Map)['videoFollowReadId'] as String;
cb38bc90   liangchengyou   feat:视频跟读逻辑处理
170
          }
e55bbdf3   Key   fixed: aliyun oss...
171
          return CupertinoPageRoute(builder: (_) => RepeatAfterContentPage(videoFollowReadId: videoFollowReadId));
3840b7fe   liangchengyou   feat:更新设置页面
172
173
174
175
176
177
        case AppRouteName.setting:
          return  CupertinoPageRoute(builder: (_) => const SettingPage());
        case AppRouteName.deleteAccount:
          return  CupertinoPageRoute(builder: (_) => const DeleteAccountPage());
        case AppRouteName.reBack:
          return CupertinoPageRoute(builder: (_) => const ReBackPage());
2a29701f   liangchengyou   feat:提交代码
178
179
180
181
182
        case AppRouteName.tab:
          return PageRouteBuilder(
              opaque: false,
              settings: const RouteSettings(name: AppRouteName.tab),
              transitionDuration: Duration.zero,
94342c3f   Key   feat: user util
183
              pageBuilder: (_, __, ___) => const TabPage(),
2a29701f   liangchengyou   feat:提交代码
184
              transitionsBuilder: (_, __, ___, child) => child);
2a427e12   吴启风   feat:绘本静态ui基本完成
185
        case AppRouteName.reading:
53e9e6db   吴启风   feat:绘本语音评测逻辑
186
187
          var courseLessonId = '';
          if (settings.arguments != null) {
934e2b47   liangchengyou   feat:权限调整+课程进度接口对接
188
            courseLessonId = (settings.arguments as Map)['courseLessonId'] as String;
53e9e6db   吴启风   feat:绘本语音评测逻辑
189
190
          }
          return CupertinoPageRoute(builder: (_) => ReadingPage(courseLessonId: courseLessonId));
2a29701f   liangchengyou   feat:提交代码
191
192
        default:
          return CupertinoPageRoute(
94342c3f   Key   feat: user util
193
              builder: (_) => Scaffold(body: Center(child: Text('No route defined for ${settings.name}'))));
2a29701f   liangchengyou   feat:提交代码
194
195
      }
    }
22b7d4da   Key   feat: user, api path
196
  }
08a0f5a8   liangchengyou   feat:路由方式更新
197
  
934e2b47   liangchengyou   feat:权限调整+课程进度接口对接
198
199
200
201
  Future pushNamed(String routeName, {Object? arguments}) {
    return Navigator.of(AppRouter.context).pushNamed(routeName, arguments: arguments).then((value) {
      return value;
    });
08a0f5a8   liangchengyou   feat:路由方式更新
202
203
  }
  
934e2b47   liangchengyou   feat:权限调整+课程进度接口对接
204
205
  Future pushNamedAndRemoveUntil(String routeName, RoutePredicate predicate, {Object? arguments}) {
    return Navigator.of(AppRouter.context).pushNamedAndRemoveUntil(routeName, predicate, arguments: arguments);
08a0f5a8   liangchengyou   feat:路由方式更新
206
207
  }
  
934e2b47   liangchengyou   feat:权限调整+课程进度接口对接
208
209
  void popPage({dynamic data}) {
     Navigator.of(AppRouter.context).pop(data);
08a0f5a8   liangchengyou   feat:路由方式更新
210
  }