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/practice/voicetopic/voicepicture/voice_pic_page.dart'; import 'package:wow_english/practice/voicetopic/voiceword/voice_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'; import 'package:wow_english/user/user_page.dart'; import 'package:wow_english/video/lookvideo/look_video_page.dart'; import 'package:wow_english/voiceanswer/voice_answer_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 voicePic = 'voicePic'; static const String voiceWord = 'voiceWord'; static const String voiceAnswer = 'voiceAnswer'; static const String user = 'user'; static const String lookVideo = 'lookVideo'; static const String tab = '/'; } class AppRouter { static final navigatorKey = GlobalKey(); // App 根节点Context static BuildContext get context => navigatorKey.currentContext!; static Route 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.user: return CupertinoPageRoute(builder: (_) => const UserPage()); case AppRouteName.topicPic: return CupertinoPageRoute(builder: (_) => const TopicPicturePage()); case AppRouteName.topicWord: return CupertinoPageRoute(builder: (_) => const TopicWordPage()); case AppRouteName.voicePic: return CupertinoPageRoute(builder: (_) => const VoicePicPage()); case AppRouteName.voiceWord: return CupertinoPageRoute(builder: (_) => const VoiceWordPage()); case AppRouteName.voiceAnswer: return CupertinoPageRoute(builder: (_) => const VoiceAnswerPage()); case AppRouteName.lookVideo: return CupertinoPageRoute(builder: (_) => const LookVideoPage()); 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}')))); } } }