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