import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import 'features/auth/login_page.dart'; import 'features/cps/cps_product_list_page.dart'; import 'features/cps/cps_provider.dart'; import 'features/home/home_page.dart'; import 'features/member/member_center_page.dart'; import 'features/member/pay_page.dart'; import 'features/outfit/outfit_page.dart'; import 'features/outfit/outfit_provider.dart'; import 'features/outfit/plan_effect_page.dart'; import 'features/outfit/plan_viewer_page.dart'; import 'features/profile/avatar_viewer_page.dart'; import 'features/profile/body_tune_page.dart'; import 'features/profile/photo_guide_page.dart'; import 'features/profile/profile_page.dart'; import 'features/wardrobe/wardrobe_page.dart'; import 'features/wardrobe/wardrobe_upload_page.dart'; void main() { runApp(const ProviderScope(child: SloganApp())); } class SloganApp extends ConsumerWidget { const SloganApp({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { final router = ref.watch(routerProvider); return MaterialApp.router( title: '我的形象穿搭', theme: ThemeData( colorScheme: ColorScheme.fromSeed(seedColor: const Color(0xFF5C6BC0)), useMaterial3: true, appBarTheme: const AppBarTheme(centerTitle: true), ), routerConfig: router, ); } } /// 路由表:启动无 token 进登录页;有 token 进主框架 final routerProvider = Provider((ref) { return GoRouter( initialLocation: '/login', routes: [ GoRoute( path: '/login', builder: (ctx, state) => const LoginPage(), ), GoRoute( path: '/home', builder: (ctx, state) => const HomePage(), ), GoRoute( path: '/profile', builder: (ctx, state) => const ProfilePage(), ), GoRoute( path: '/photo-guide', builder: (ctx, state) => const PhotoGuidePage(), ), GoRoute( path: '/body-tune', builder: (ctx, state) => const BodyTunePage(), ), GoRoute( path: '/wardrobe', builder: (ctx, state) => const WardrobePage(), ), GoRoute( path: '/wardrobe-upload', builder: (ctx, state) => const WardrobeUploadPage(), ), GoRoute( path: '/outfit', builder: (ctx, state) => const OutfitPage(), ), GoRoute( path: '/commercial', builder: (ctx, state) => const MemberCenterPage(), ), GoRoute( path: '/pay', builder: (context, state) => PayPage(args: state.extra! as PayArgs), ), GoRoute( path: '/plan-viewer', builder: (ctx, state) => const PlanViewerPage(), ), GoRoute( path: '/plan-effect', builder: (ctx, state) => PlanEffectPage(images: state.extra as List), ), GoRoute( path: '/avatar-viewer', builder: (ctx, state) => const AvatarViewerPage(), ), GoRoute( path: '/cps-product-list', builder: (ctx, state) => CpsProductListPage(args: state.extra! as CpsListArgs), ), ], ); });