import 'package:dating_touchme_app/pages/complete_info.dart'; import 'package:dating_touchme_app/pages/edit_info_page.dart'; import 'package:dating_touchme_app/pages/home_page.dart'; import 'package:dating_touchme_app/pages/live_room_page.dart'; import 'package:dating_touchme_app/pages/login_page.dart'; import 'package:dating_touchme_app/pages/message_page.dart'; import 'package:dating_touchme_app/pages/message_setting_page.dart'; import 'package:dating_touchme_app/pages/notify_page.dart'; import 'package:dating_touchme_app/pages/open_webview.dart'; import 'package:dating_touchme_app/pages/pay_history_page.dart'; import 'package:dating_touchme_app/pages/report_page.dart'; import 'package:dating_touchme_app/pages/rose_page.dart'; import 'package:dating_touchme_app/pages/signature_page.dart'; import 'package:dating_touchme_app/pages/tag_setting_page.dart'; import 'package:dating_touchme_app/pages/test_page.dart'; import 'package:dating_touchme_app/pages/user_info_page.dart'; import 'package:dating_touchme_app/router/route_paths.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; class AppRouter { AppRouter(); // 根 Navigator(需要时可区分 root / shell 子导航) final GlobalKey _rootKey = GlobalKey(); late final GoRouter router = GoRouter( navigatorKey: _rootKey, initialLocation: RoutePaths.login, debugLogDiagnostics: true, // 开发期建议开启 // 统一错误页 errorBuilder: (context, state) => Scaffold( body: Center( child: Text('Oops: ${state.error?.toString() ?? 'Page not found'}'), ), ), routes: [ // 启动/闪屏(或可直接跳 home / login) GoRoute( name: RouteNames.login, path: RoutePaths.login, builder: (context, state) => const LoginPage(), ), GoRoute( name: RouteNames.home, path: RoutePaths.home, builder: (context, state) => const HomePage(), ), GoRoute( name: RouteNames.webview, path: RoutePaths.webview, builder: (context, state) { final url = state.uri.queryParameters['url'] ?? ''; return OpenWebView(url: url,); }, ), GoRoute( name: RouteNames.completeInfo, path: RoutePaths.completeInfo, builder: (context, state) => const CompleteInfo(), ), GoRoute( name: RouteNames.userInfo, path: RoutePaths.userInfo, builder: (context, state) { final id = int.parse(state.uri.queryParameters['id'] ?? '0'); return UserInfoPage(id: id,); }, ), GoRoute( name: RouteNames.liveRoom, path: RoutePaths.liveRoom, builder: (context, state) { final id = int.parse(state.uri.queryParameters['id'] ?? '0'); return LiveRoomPage(id: id,); }, ), GoRoute( name: RouteNames.notify, path: RoutePaths.notify, builder: (context, state) => const NotifyPage(), ), GoRoute( name: RouteNames.message, path: RoutePaths.message, builder: (context, state) { final id = int.parse(state.uri.queryParameters['id'] ?? '0'); return MessagePage(id: id,); }, ), GoRoute( name: RouteNames.editInfo, path: RoutePaths.editInfo, builder: (context, state) => const EditInfoPage(), ), GoRoute( name: RouteNames.signature, path: RoutePaths.signature, builder: (context, state) => const SignaturePage(), ), GoRoute( name: RouteNames.report, path: RoutePaths.report, builder: (context, state) => const ReportPage(), ), GoRoute( name: RouteNames.messageSetting, path: RoutePaths.messageSetting, builder: (context, state) => const MessageSettingPage(), ), GoRoute( name: RouteNames.tagSetting, path: RoutePaths.tagSetting, builder: (context, state) => const TagSettingPage(), ), GoRoute( name: RouteNames.rose, path: RoutePaths.rose, builder: (context, state) => const RosePage(), ), GoRoute( name: RouteNames.payHistory, path: RoutePaths.payHistory, builder: (context, state) => const PayHistoryPage(), ), GoRoute( name: RouteNames.test, path: RoutePaths.test, builder: (context, state) { final a = int.parse(state.uri.queryParameters['a'] ?? '0'); final b = int.parse(state.uri.queryParameters['b'] ?? '0'); return TestPage(a: a, b: b); }, ), ], ); }