import 'package:flutter/material.dart'; import '../screens/auth/login_screen.dart'; import '../screens/auth/register_screen.dart'; import '../screens/home/home_screen.dart'; import '../screens/news/news_screen.dart'; import '../screens/services/services_screen.dart'; import '../screens/profile/profile_screen.dart'; import '../screens/profile/profile_detail_screen.dart'; import '../screens/splash_screen.dart'; import '../../core/constants/route_constants.dart'; import 'route_guards.dart'; class AppRouter { static Route onGenerateRoute(RouteSettings settings) { switch (settings.name) { case RouteConstants.splash: return MaterialPageRoute(builder: (_) => const SplashScreen()); case RouteConstants.home: return MaterialPageRoute(builder: (_) => const HomeScreen()); case RouteConstants.login: return MaterialPageRoute(builder: (_) => const LoginScreen()); case RouteConstants.register: return MaterialPageRoute(builder: (_) => const RegisterScreen()); case RouteConstants.news: return MaterialPageRoute(builder: (_) => const NewsScreen()); case RouteConstants.services: return MaterialPageRoute(builder: (_) => const ServicesScreen()); case RouteConstants.profile: return MaterialPageRoute( builder: (_) => ProtectedRoute( routeName: RouteConstants.profile, child: const ProfileScreen(), ), ); case RouteConstants.profileDetail: return MaterialPageRoute( builder: (_) => ProtectedRoute( routeName: RouteConstants.profileDetail, child: const ProfileDetailScreen(), ), ); default: return MaterialPageRoute( builder: (_) => Scaffold( body: Center( child: Text('找不到页面: ${settings.name}'), ), ), ); } } static void configureRoutes(BuildContext context) { // 替换主应用的路由生成器 final materialApp = context.findAncestorWidgetOfExactType(); if (materialApp != null) { // 这里通常会在main.dart中配置 } } }