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
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);
|
|
},
|
|
),
|
|
|
|
|
|
],
|
|
|
|
);
|
|
}
|