2023-10-29 03:04:45 +01:00
|
|
|
import 'package:flutter/material.dart';
|
2023-10-28 22:38:49 +02:00
|
|
|
import 'package:go_router/go_router.dart';
|
|
|
|
|
|
|
|
import 'package:adguard_home_manager/screens/home/home.dart';
|
|
|
|
import 'package:adguard_home_manager/screens/clients/clients.dart';
|
|
|
|
import 'package:adguard_home_manager/screens/connect/connect.dart';
|
|
|
|
import 'package:adguard_home_manager/screens/filters/filters.dart';
|
|
|
|
import 'package:adguard_home_manager/screens/logs/logs.dart';
|
2023-10-29 02:19:00 +01:00
|
|
|
import 'package:adguard_home_manager/screens/settings/settings.dart';
|
2023-10-28 22:38:49 +02:00
|
|
|
import 'package:adguard_home_manager/widgets/layout.dart';
|
|
|
|
|
2023-10-29 03:04:45 +01:00
|
|
|
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
2023-10-28 22:38:49 +02:00
|
|
|
import 'package:adguard_home_manager/routes/router_globals.dart';
|
|
|
|
import 'package:adguard_home_manager/constants/routes_names.dart';
|
|
|
|
|
|
|
|
final List<RouteBase> routes = [
|
|
|
|
GoRoute(
|
|
|
|
path: "/",
|
|
|
|
redirect: (context, state) => RoutesNames.home,
|
|
|
|
),
|
|
|
|
StatefulShellRoute.indexedStack(
|
|
|
|
builder: (context, state, navigationShell) => Layout(
|
|
|
|
navigationShell: navigationShell
|
|
|
|
),
|
|
|
|
branches: [
|
|
|
|
StatefulShellBranch(
|
|
|
|
navigatorKey: homeNavigatorKey,
|
|
|
|
routes: [
|
|
|
|
GoRoute(
|
|
|
|
parentNavigatorKey: homeNavigatorKey,
|
|
|
|
path: RoutesNames.home,
|
2023-10-29 03:04:45 +01:00
|
|
|
pageBuilder: (context, state) {
|
|
|
|
if (isDesktop(MediaQuery.of(context).size.width)) {
|
|
|
|
return const NoTransitionPage(child: Home());
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return const MaterialPage(child: Home());
|
|
|
|
}
|
|
|
|
},
|
2023-10-28 22:38:49 +02:00
|
|
|
),
|
|
|
|
]
|
|
|
|
),
|
|
|
|
StatefulShellBranch(
|
|
|
|
navigatorKey: clientsNavigatorKey,
|
|
|
|
routes: [
|
2023-10-29 02:19:00 +01:00
|
|
|
GoRoute(
|
2023-10-28 22:38:49 +02:00
|
|
|
parentNavigatorKey: clientsNavigatorKey,
|
2023-10-29 02:19:00 +01:00
|
|
|
path: RoutesNames.clients,
|
2023-10-29 03:04:45 +01:00
|
|
|
pageBuilder: (context, state) {
|
|
|
|
if (isDesktop(MediaQuery.of(context).size.width)) {
|
|
|
|
return const NoTransitionPage(child: Clients());
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return const MaterialPage(child: Clients());
|
|
|
|
}
|
|
|
|
},
|
2023-10-28 22:38:49 +02:00
|
|
|
)
|
|
|
|
]
|
|
|
|
),
|
|
|
|
StatefulShellBranch(
|
|
|
|
navigatorKey: logsNavigatorKey,
|
|
|
|
routes: [
|
|
|
|
GoRoute(
|
2023-10-29 02:19:00 +01:00
|
|
|
parentNavigatorKey: logsNavigatorKey,
|
2023-10-28 22:38:49 +02:00
|
|
|
path: RoutesNames.logs,
|
2023-10-29 03:04:45 +01:00
|
|
|
pageBuilder: (context, state) {
|
|
|
|
if (isDesktop(MediaQuery.of(context).size.width)) {
|
|
|
|
return const NoTransitionPage(child: Logs());
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return const MaterialPage(child: Logs());
|
|
|
|
}
|
|
|
|
},
|
2023-10-28 22:38:49 +02:00
|
|
|
)
|
|
|
|
]
|
|
|
|
),
|
|
|
|
StatefulShellBranch(
|
|
|
|
navigatorKey: filtersNavigatorKey,
|
|
|
|
routes: [
|
|
|
|
GoRoute(
|
2023-10-29 02:19:00 +01:00
|
|
|
parentNavigatorKey: filtersNavigatorKey,
|
2023-10-28 22:38:49 +02:00
|
|
|
path: RoutesNames.filters,
|
2023-10-29 03:04:45 +01:00
|
|
|
pageBuilder: (context, state) {
|
|
|
|
if (isDesktop(MediaQuery.of(context).size.width)) {
|
|
|
|
return const NoTransitionPage(child: Filters());
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return const MaterialPage(child: Filters());
|
|
|
|
}
|
|
|
|
},
|
2023-10-28 22:38:49 +02:00
|
|
|
)
|
|
|
|
]
|
|
|
|
),
|
|
|
|
StatefulShellBranch(
|
|
|
|
navigatorKey: settingsNavigatorKey,
|
|
|
|
routes: [
|
|
|
|
GoRoute(
|
2023-10-29 02:19:00 +01:00
|
|
|
parentNavigatorKey: settingsNavigatorKey,
|
|
|
|
path: RoutesNames.settings,
|
2023-10-29 03:04:45 +01:00
|
|
|
pageBuilder: (context, state) {
|
|
|
|
if (isDesktop(MediaQuery.of(context).size.width)) {
|
|
|
|
return const NoTransitionPage(child: Settings());
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return const MaterialPage(child: Settings());
|
|
|
|
}
|
|
|
|
},
|
2023-10-28 22:38:49 +02:00
|
|
|
)
|
|
|
|
]
|
|
|
|
),
|
|
|
|
StatefulShellBranch(
|
|
|
|
navigatorKey: connectNavigatorKey,
|
|
|
|
routes: [
|
|
|
|
GoRoute(
|
|
|
|
path: RoutesNames.connect,
|
2023-10-29 03:04:45 +01:00
|
|
|
pageBuilder: (context, state) {
|
|
|
|
if (isDesktop(MediaQuery.of(context).size.width)) {
|
|
|
|
return const NoTransitionPage(child: Connect());
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return const MaterialPage(child: Connect());
|
|
|
|
}
|
|
|
|
},
|
2023-10-28 22:38:49 +02:00
|
|
|
)
|
|
|
|
]
|
|
|
|
),
|
|
|
|
]
|
|
|
|
)
|
|
|
|
];
|