100 lines
3.5 KiB
Dart
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()),
|
|
],
|
|
),
|
|
],
|
|
);
|