| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 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';
- 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 Route<dynamic> 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),
- );
- 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);
- }
- }
|