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.
84 lines
2.6 KiB
84 lines
2.6 KiB
import 'package:dating_touchme_app/pages/complete_info.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/open_webview.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.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);
|
|
},
|
|
),
|
|
|
|
|
|
],
|
|
|
|
);
|
|
}
|