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.
45 lines
1.3 KiB
45 lines
1.3 KiB
import 'package:dating_touchme_app/pages/home_page.dart';
|
|
import 'package:dating_touchme_app/pages/test_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.home,
|
|
debugLogDiagnostics: true, // 开发期建议开启
|
|
// 统一错误页
|
|
errorBuilder: (context, state) => Scaffold(
|
|
body: Center(
|
|
child: Text('Oops: ${state.error?.toString() ?? 'Page not found'}'),
|
|
),
|
|
),
|
|
routes: [
|
|
// 启动/闪屏(或可直接跳 home / login)
|
|
GoRoute(
|
|
name: RouteNames.home,
|
|
path: RoutePaths.home,
|
|
builder: (context, state) => const HomePage(),
|
|
),
|
|
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);
|
|
},
|
|
),
|
|
|
|
|
|
],
|
|
|
|
);
|
|
}
|