2026-05-08 20:27:57 +07:00

100 lines
3.5 KiB
Dart

import 'package:go_router/go_router.dart';
import '../core/constants/app_constants.dart';
import '../features/screens.dart';
import '../shared/widgets/app_shells.dart';
final GoRouter appRouter = GoRouter(
initialLocation: '/splash',
redirect: (context, state) async {
final path = state.matchedLocation;
final serverUrl = await AppConstants.getServerUrl();
if ((serverUrl == null || serverUrl.isEmpty) && path != '/server-connect') {
return '/server-connect';
}
if (path == '/server-connect' &&
serverUrl != null &&
serverUrl.isNotEmpty) {
return '/splash';
}
return null;
},
routes: [
GoRoute(
path: '/server-connect',
builder: (_, __) => const ServerConnectScreen()),
GoRoute(path: '/splash', builder: (_, __) => const SplashScreen()),
GoRoute(path: '/login', builder: (_, __) => const LoginScreen()),
GoRoute(path: '/register', builder: (_, __) => const RegisterScreen()),
GoRoute(
path: '/incoming-call', builder: (_, __) => const IncomingCallScreen()),
ShellRoute(
builder: (_, __, child) => UserShell(child: child),
routes: [
GoRoute(
path: '/user/walkguide',
builder: (_, __) => const WalkGuideScreen()),
GoRoute(path: '/user/sos', builder: (_, __) => const SosScreen()),
GoRoute(
path: '/user/activity',
builder: (_, __) => const ActivityLogScreen()),
GoRoute(
path: '/user/notifications',
builder: (_, __) => const NotificationScreen()),
GoRoute(
path: '/user/navigation',
builder: (_, __) => const NavigationModeScreen()),
GoRoute(
path: '/user/settings',
builder: (_, __) => const UserSettingsScreen()),
GoRoute(
path: '/user/pairing',
builder: (_, __) => const UserPairingScreen()),
GoRoute(path: '/user/call', builder: (_, __) => const CallScreen()),
GoRoute(
path: '/user/benchmark',
builder: (_, __) => const AiBenchmarkScreen()),
],
),
ShellRoute(
builder: (_, __, child) => GuardianShell(child: child),
routes: [
GoRoute(
path: '/guardian/dashboard',
builder: (_, __) => const GuardianDashboardScreen()),
GoRoute(
path: '/guardian/map',
builder: (_, __) => const GuardianMapScreen()),
GoRoute(
path: '/guardian/logs',
builder: (_, __) => const GuardianActivityLogScreen()),
GoRoute(
path: '/guardian/send-notif',
builder: (_, __) => const GuardianSendNotifScreen()),
GoRoute(
path: '/guardian/ai-config',
builder: (_, __) => const GuardianAiConfigScreen()),
GoRoute(
path: '/guardian/voice-cmd',
builder: (_, __) => const GuardianVoiceCmdScreen()),
GoRoute(
path: '/guardian/shortcuts',
builder: (_, __) => const GuardianShortcutScreen()),
GoRoute(
path: '/guardian/geofence',
builder: (_, __) => const GuardianGeofenceScreen()),
GoRoute(
path: '/guardian/pairing',
builder: (_, __) => const GuardianPairingScreen()),
GoRoute(
path: '/guardian/settings',
builder: (_, __) => const GuardianSettingsScreen()),
GoRoute(
path: '/guardian/benchmark',
builder: (_, __) => const AiBenchmarkScreen()),
],
),
],
);