import 'package:flutter/material.dart'; import 'package:japp_flutter/core/models/challenge_model.dart'; import 'package:japp_flutter/features/challenge/views/add_challenge_screen.dart'; import 'package:japp_flutter/features/challenge/views/challenge_detail_screen.dart'; import 'package:japp_flutter/features/challenge/views/challenge_list_screen.dart'; import 'package:japp_flutter/features/challenge/views/edit_challenge_screen.dart'; import 'package:japp_flutter/features/challenge/views/mock_page.dart'; class AppRouter { static const String challengeList = '/'; static const String challengeDetail = '/challenge/detail'; static const String addChallenge = '/challenge/add'; static const String editChallenge = '/challenge/edit'; static const String mockPage = '/mock/page'; static Route generateRoute(RouteSettings settings) { switch (settings.name) { case challengeList: return MaterialPageRoute(builder: (_) => const ChallengeListScreen()); case challengeDetail: final challengeId = settings.arguments as int; return MaterialPageRoute( builder: (_) => ChallengeDetailScreen(challengeId: challengeId), ); case addChallenge: return MaterialPageRoute(builder: (_) => const AddChallengeScreen()); case editChallenge: final challenge = settings.arguments as ChallengeModel; return MaterialPageRoute( builder: (_) => ChallengeEditScreen(initialChallenge: challenge), ); case mockPage: return MaterialPageRoute(builder: (_)=> const MockPage()); default: return MaterialPageRoute( builder: (_) => Scaffold( body: Center(child: Text('No route defined for ${settings.name}')), ), ); } } // 静态跳转方法(可选) static void navigateTo(BuildContext context, String routeName, {Object? args}) { Navigator.pushNamed(context, routeName, arguments: args); } }