动我项目仓库 flutter:3.22 dart:3.4.4
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

141 lines
4.6 KiB

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<NavigatorState> _rootKey = GlobalKey<NavigatorState>();
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);
},
),
],
);
}