import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:wow_english/app/splash_page.dart'; import 'package:wow_english/home/home_page.dart'; import 'package:wow_english/login/forget_password_page.dart'; import 'package:wow_english/login/login_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 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: final phoneNum = (settings.arguments as Map)['phoneNumber'] as String; return CupertinoPageRoute(builder: (_) => ForgetPassWordPage(phoneNum: phoneNum)); 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}')))); } } }