mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-04-21 06:19:10 +00:00
Removed go router
This commit is contained in:
parent
c391c76f5a
commit
af14484a95
19 changed files with 85 additions and 221 deletions
|
@ -1,15 +1,24 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.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/home/home.dart';
|
||||||
|
import 'package:adguard_home_manager/screens/logs/logs.dart';
|
||||||
|
import 'package:adguard_home_manager/screens/settings/settings.dart';
|
||||||
|
|
||||||
import 'package:adguard_home_manager/models/app_screen.dart';
|
import 'package:adguard_home_manager/models/app_screen.dart';
|
||||||
|
|
||||||
List<AppScreen> screensSelectServer = [
|
List<AppScreen> screensSelectServer = [
|
||||||
const AppScreen(
|
const AppScreen(
|
||||||
name: "connect",
|
name: "connect",
|
||||||
icon: Icons.link_rounded,
|
icon: Icons.link_rounded,
|
||||||
|
child: Connect()
|
||||||
),
|
),
|
||||||
const AppScreen(
|
const AppScreen(
|
||||||
name: "settings",
|
name: "settings",
|
||||||
icon: Icons.settings_rounded,
|
icon: Icons.settings_rounded,
|
||||||
|
child: Settings()
|
||||||
)
|
)
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -17,21 +26,26 @@ List<AppScreen> screensServerConnected = [
|
||||||
const AppScreen(
|
const AppScreen(
|
||||||
name: "home",
|
name: "home",
|
||||||
icon: Icons.home_rounded,
|
icon: Icons.home_rounded,
|
||||||
|
child: Home()
|
||||||
),
|
),
|
||||||
const AppScreen(
|
const AppScreen(
|
||||||
name: "clients",
|
name: "clients",
|
||||||
icon: Icons.devices,
|
icon: Icons.devices,
|
||||||
|
child: Clients()
|
||||||
),
|
),
|
||||||
const AppScreen(
|
const AppScreen(
|
||||||
name: "logs",
|
name: "logs",
|
||||||
icon: Icons.list_alt_rounded,
|
icon: Icons.list_alt_rounded,
|
||||||
|
child: Logs()
|
||||||
),
|
),
|
||||||
const AppScreen(
|
const AppScreen(
|
||||||
name: "filters",
|
name: "filters",
|
||||||
icon: Icons.shield_rounded,
|
icon: Icons.shield_rounded,
|
||||||
|
child: Filters()
|
||||||
),
|
),
|
||||||
const AppScreen(
|
const AppScreen(
|
||||||
name: "settings",
|
name: "settings",
|
||||||
icon: Icons.settings_rounded,
|
icon: Icons.settings_rounded,
|
||||||
|
child: Settings()
|
||||||
)
|
)
|
||||||
];
|
];
|
|
@ -16,11 +16,12 @@ import 'package:window_size/window_size.dart';
|
||||||
import 'package:flutter_localizations/flutter_localizations.dart';
|
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||||
|
|
||||||
|
import 'package:adguard_home_manager/widgets/layout.dart';
|
||||||
import 'package:adguard_home_manager/widgets/menu_bar.dart';
|
import 'package:adguard_home_manager/widgets/menu_bar.dart';
|
||||||
|
|
||||||
import 'package:adguard_home_manager/functions/check_app_updates.dart';
|
import 'package:adguard_home_manager/functions/check_app_updates.dart';
|
||||||
import 'package:adguard_home_manager/functions/open_url.dart';
|
import 'package:adguard_home_manager/functions/open_url.dart';
|
||||||
import 'package:adguard_home_manager/widgets/update_modal.dart';
|
import 'package:adguard_home_manager/widgets/update_modal.dart';
|
||||||
import 'package:adguard_home_manager/routes/router.dart';
|
|
||||||
import 'package:adguard_home_manager/providers/logs_provider.dart';
|
import 'package:adguard_home_manager/providers/logs_provider.dart';
|
||||||
import 'package:adguard_home_manager/providers/app_config_provider.dart';
|
import 'package:adguard_home_manager/providers/app_config_provider.dart';
|
||||||
import 'package:adguard_home_manager/providers/clients_provider.dart';
|
import 'package:adguard_home_manager/providers/clients_provider.dart';
|
||||||
|
@ -244,7 +245,7 @@ class _MainState extends State<Main> with WidgetsBindingObserver {
|
||||||
: Brightness.light,
|
: Brightness.light,
|
||||||
),
|
),
|
||||||
child: DynamicColorBuilder(
|
child: DynamicColorBuilder(
|
||||||
builder: (lightDynamic, darkDynamic) => MaterialApp.router(
|
builder: (lightDynamic, darkDynamic) => MaterialApp(
|
||||||
title: 'AdGuard Home Manager',
|
title: 'AdGuard Home Manager',
|
||||||
theme: appConfigProvider.androidDeviceInfo != null && appConfigProvider.androidDeviceInfo!.version.sdkInt >= 31
|
theme: appConfigProvider.androidDeviceInfo != null && appConfigProvider.androidDeviceInfo!.version.sdkInt >= 31
|
||||||
? appConfigProvider.useDynamicColor == true
|
? appConfigProvider.useDynamicColor == true
|
||||||
|
@ -285,7 +286,7 @@ class _MainState extends State<Main> with WidgetsBindingObserver {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
routerConfig: goRouter,
|
home: Layout(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -5,11 +5,13 @@ class AppScreen {
|
||||||
final IconData icon;
|
final IconData icon;
|
||||||
final PreferredSizeWidget? appBar;
|
final PreferredSizeWidget? appBar;
|
||||||
final Widget? fab;
|
final Widget? fab;
|
||||||
|
final Widget child;
|
||||||
|
|
||||||
const AppScreen({
|
const AppScreen({
|
||||||
required this.name,
|
required this.name,
|
||||||
required this.icon,
|
required this.icon,
|
||||||
this.appBar,
|
this.appBar,
|
||||||
this.fab
|
this.fab,
|
||||||
|
required this.child,
|
||||||
});
|
});
|
||||||
}
|
}
|
|
@ -1,20 +0,0 @@
|
||||||
import 'package:go_router/go_router.dart';
|
|
||||||
import 'package:provider/provider.dart';
|
|
||||||
|
|
||||||
import 'package:adguard_home_manager/routes/router_globals.dart';
|
|
||||||
import 'package:adguard_home_manager/routes/routes.dart';
|
|
||||||
import 'package:adguard_home_manager/providers/servers_provider.dart';
|
|
||||||
import 'package:adguard_home_manager/constants/routes_names.dart';
|
|
||||||
|
|
||||||
final goRouter = GoRouter(
|
|
||||||
navigatorKey: rootNavigatorKey,
|
|
||||||
redirect: (context, state) {
|
|
||||||
final serversProvider = Provider.of<ServersProvider>(context, listen: false);
|
|
||||||
if (serversProvider.selectedServer == null) {
|
|
||||||
return RoutesNames.connect;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
},
|
|
||||||
initialLocation: RoutesNames.home,
|
|
||||||
routes: routes,
|
|
||||||
);
|
|
|
@ -1,10 +0,0 @@
|
||||||
import 'package:flutter/widgets.dart';
|
|
||||||
|
|
||||||
final GlobalKey<NavigatorState> rootNavigatorKey = GlobalKey<NavigatorState>();
|
|
||||||
final GlobalKey<NavigatorState> connectNavigatorKey = GlobalKey<NavigatorState>();
|
|
||||||
final GlobalKey<NavigatorState> homeNavigatorKey = GlobalKey<NavigatorState>();
|
|
||||||
final GlobalKey<NavigatorState> clientsNavigatorKey = GlobalKey<NavigatorState>();
|
|
||||||
final GlobalKey<NavigatorState> logsNavigatorKey = GlobalKey<NavigatorState>();
|
|
||||||
final GlobalKey<NavigatorState> filtersNavigatorKey = GlobalKey<NavigatorState>();
|
|
||||||
final GlobalKey<NavigatorState> settingsNavigatorKey = GlobalKey<NavigatorState>();
|
|
||||||
final GlobalKey<NavigatorState> settingsListNavigatorKey = GlobalKey<NavigatorState>();
|
|
|
@ -1,125 +0,0 @@
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
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';
|
|
||||||
import 'package:adguard_home_manager/screens/settings/settings.dart';
|
|
||||||
import 'package:adguard_home_manager/widgets/layout.dart';
|
|
||||||
|
|
||||||
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
|
||||||
import 'package:adguard_home_manager/routes/router_globals.dart';
|
|
||||||
import 'package:adguard_home_manager/constants/routes_names.dart';
|
|
||||||
|
|
||||||
Page<dynamic> routePage({
|
|
||||||
required BuildContext context,
|
|
||||||
required Widget child
|
|
||||||
}) {
|
|
||||||
if (isDesktop(MediaQuery.of(context).size.width)) {
|
|
||||||
return NoTransitionPage(child: child);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return CustomTransitionPage(
|
|
||||||
child: child,
|
|
||||||
transitionsBuilder: (context, anim1, anim2, child) {
|
|
||||||
return FadeTransition(
|
|
||||||
opacity: anim1,
|
|
||||||
child: child,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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,
|
|
||||||
pageBuilder: (context, state) => routePage(
|
|
||||||
context: context,
|
|
||||||
child: const Home()
|
|
||||||
)
|
|
||||||
),
|
|
||||||
]
|
|
||||||
),
|
|
||||||
StatefulShellBranch(
|
|
||||||
navigatorKey: clientsNavigatorKey,
|
|
||||||
routes: [
|
|
||||||
GoRoute(
|
|
||||||
parentNavigatorKey: clientsNavigatorKey,
|
|
||||||
path: RoutesNames.clients,
|
|
||||||
pageBuilder: (context, state) => routePage(
|
|
||||||
context: context,
|
|
||||||
child: const Clients()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
),
|
|
||||||
StatefulShellBranch(
|
|
||||||
navigatorKey: logsNavigatorKey,
|
|
||||||
routes: [
|
|
||||||
GoRoute(
|
|
||||||
parentNavigatorKey: logsNavigatorKey,
|
|
||||||
path: RoutesNames.logs,
|
|
||||||
pageBuilder: (context, state) => routePage(
|
|
||||||
context: context,
|
|
||||||
child: const Logs()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
),
|
|
||||||
StatefulShellBranch(
|
|
||||||
navigatorKey: filtersNavigatorKey,
|
|
||||||
routes: [
|
|
||||||
GoRoute(
|
|
||||||
parentNavigatorKey: filtersNavigatorKey,
|
|
||||||
path: RoutesNames.filters,
|
|
||||||
pageBuilder: (context, state) => routePage(
|
|
||||||
context: context,
|
|
||||||
child: const Filters()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
),
|
|
||||||
StatefulShellBranch(
|
|
||||||
navigatorKey: settingsNavigatorKey,
|
|
||||||
routes: [
|
|
||||||
GoRoute(
|
|
||||||
parentNavigatorKey: settingsNavigatorKey,
|
|
||||||
path: RoutesNames.settings,
|
|
||||||
pageBuilder: (context, state) => routePage(
|
|
||||||
context: context,
|
|
||||||
child: const Settings()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
),
|
|
||||||
StatefulShellBranch(
|
|
||||||
navigatorKey: connectNavigatorKey,
|
|
||||||
routes: [
|
|
||||||
GoRoute(
|
|
||||||
path: RoutesNames.connect,
|
|
||||||
pageBuilder: (context, state) => routePage(
|
|
||||||
context: context,
|
|
||||||
child: const Connect()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
),
|
|
||||||
]
|
|
||||||
)
|
|
||||||
];
|
|
|
@ -8,7 +8,6 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||||
import 'package:adguard_home_manager/screens/logs/log_tile.dart';
|
import 'package:adguard_home_manager/screens/logs/log_tile.dart';
|
||||||
import 'package:adguard_home_manager/screens/logs/log_details_screen.dart';
|
import 'package:adguard_home_manager/screens/logs/log_details_screen.dart';
|
||||||
|
|
||||||
import 'package:adguard_home_manager/routes/router_globals.dart';
|
|
||||||
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
||||||
import 'package:adguard_home_manager/models/logs.dart';
|
import 'package:adguard_home_manager/models/logs.dart';
|
||||||
import 'package:adguard_home_manager/providers/app_config_provider.dart';
|
import 'package:adguard_home_manager/providers/app_config_provider.dart';
|
||||||
|
@ -213,7 +212,7 @@ class _LogsListClientState extends State<LogsListClient> {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
rootNavigatorKey.currentState!.push(
|
Navigator.of(context).push(
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
builder: (context) => LogDetailsScreen(
|
builder: (context) => LogDetailsScreen(
|
||||||
log: log,
|
log: log,
|
||||||
|
|
|
@ -8,7 +8,6 @@ import 'package:adguard_home_manager/screens/clients/client/logs_list_client.dar
|
||||||
import 'package:adguard_home_manager/screens/clients/clients_list.dart';
|
import 'package:adguard_home_manager/screens/clients/clients_list.dart';
|
||||||
|
|
||||||
import 'package:adguard_home_manager/constants/enums.dart';
|
import 'package:adguard_home_manager/constants/enums.dart';
|
||||||
import 'package:adguard_home_manager/routes/router_globals.dart';
|
|
||||||
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
||||||
import 'package:adguard_home_manager/models/clients.dart';
|
import 'package:adguard_home_manager/models/clients.dart';
|
||||||
import 'package:adguard_home_manager/providers/app_config_provider.dart';
|
import 'package:adguard_home_manager/providers/app_config_provider.dart';
|
||||||
|
@ -72,7 +71,7 @@ class _ClientsListsState extends State<ClientsLists> with TickerProviderStateMix
|
||||||
SplitView.of(context).push(w);
|
SplitView.of(context).push(w);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
rootNavigatorKey.currentState!.push(
|
Navigator.of(context).push(
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
builder: (context) => w,
|
builder: (context) => w,
|
||||||
)
|
)
|
||||||
|
@ -92,7 +91,7 @@ class _ClientsListsState extends State<ClientsLists> with TickerProviderStateMix
|
||||||
SplitView.of(context).push(w);
|
SplitView.of(context).push(w);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
rootNavigatorKey.currentState!.push(
|
Navigator.of(context).push(
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
builder: (context) => w,
|
builder: (context) => w,
|
||||||
)
|
)
|
||||||
|
|
|
@ -14,7 +14,6 @@ import 'package:adguard_home_manager/screens/filters/remove_custom_rule_modal.da
|
||||||
import 'package:adguard_home_manager/screens/filters/blocked_services_screen.dart';
|
import 'package:adguard_home_manager/screens/filters/blocked_services_screen.dart';
|
||||||
import 'package:adguard_home_manager/screens/filters/update_interval_lists_modal.dart';
|
import 'package:adguard_home_manager/screens/filters/update_interval_lists_modal.dart';
|
||||||
|
|
||||||
import 'package:adguard_home_manager/routes/router_globals.dart';
|
|
||||||
import 'package:adguard_home_manager/functions/snackbar.dart';
|
import 'package:adguard_home_manager/functions/snackbar.dart';
|
||||||
import 'package:adguard_home_manager/providers/status_provider.dart';
|
import 'package:adguard_home_manager/providers/status_provider.dart';
|
||||||
import 'package:adguard_home_manager/classes/process_modal.dart';
|
import 'package:adguard_home_manager/classes/process_modal.dart';
|
||||||
|
@ -203,7 +202,7 @@ class _FiltersState extends State<Filters> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
rootNavigatorKey.currentState!.push(
|
Navigator.of(context).push(
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
builder: (context) => ListDetailsScreen(
|
builder: (context) => ListDetailsScreen(
|
||||||
listId: filter.id,
|
listId: filter.id,
|
||||||
|
|
|
@ -5,7 +5,6 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||||
import 'package:adguard_home_manager/screens/servers/servers.dart';
|
import 'package:adguard_home_manager/screens/servers/servers.dart';
|
||||||
|
|
||||||
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
||||||
import 'package:adguard_home_manager/routes/router_globals.dart';
|
|
||||||
import 'package:adguard_home_manager/constants/enums.dart';
|
import 'package:adguard_home_manager/constants/enums.dart';
|
||||||
import 'package:adguard_home_manager/providers/status_provider.dart';
|
import 'package:adguard_home_manager/providers/status_provider.dart';
|
||||||
import 'package:adguard_home_manager/functions/open_url.dart';
|
import 'package:adguard_home_manager/functions/open_url.dart';
|
||||||
|
@ -33,7 +32,7 @@ class HomeAppBar extends StatelessWidget {
|
||||||
|
|
||||||
void navigateServers() {
|
void navigateServers() {
|
||||||
Future.delayed(const Duration(milliseconds: 0), (() {
|
Future.delayed(const Duration(milliseconds: 0), (() {
|
||||||
rootNavigatorKey.currentState!.push(
|
Navigator.of(context).push(
|
||||||
MaterialPageRoute(builder: (context) => const Servers())
|
MaterialPageRoute(builder: (context) => const Servers())
|
||||||
);
|
);
|
||||||
}));
|
}));
|
||||||
|
|
|
@ -11,7 +11,6 @@ import 'package:adguard_home_manager/widgets/domain_options.dart';
|
||||||
import 'package:adguard_home_manager/screens/top_items/top_items_modal.dart';
|
import 'package:adguard_home_manager/screens/top_items/top_items_modal.dart';
|
||||||
import 'package:adguard_home_manager/screens/top_items/top_items.dart';
|
import 'package:adguard_home_manager/screens/top_items/top_items.dart';
|
||||||
|
|
||||||
import 'package:adguard_home_manager/routes/router_globals.dart';
|
|
||||||
import 'package:adguard_home_manager/models/applied_filters.dart';
|
import 'package:adguard_home_manager/models/applied_filters.dart';
|
||||||
import 'package:adguard_home_manager/providers/status_provider.dart';
|
import 'package:adguard_home_manager/providers/status_provider.dart';
|
||||||
import 'package:adguard_home_manager/providers/logs_provider.dart';
|
import 'package:adguard_home_manager/providers/logs_provider.dart';
|
||||||
|
@ -218,7 +217,7 @@ class _TopItemsState extends State<TopItems> {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
rootNavigatorKey.currentState!.push(
|
Navigator.of(context).push(
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
builder: (context) => TopItemsScreen(
|
builder: (context) => TopItemsScreen(
|
||||||
type: widget.type,
|
type: widget.type,
|
||||||
|
|
|
@ -12,7 +12,6 @@ import 'package:adguard_home_manager/screens/logs/logs_config_modal.dart';
|
||||||
import 'package:adguard_home_manager/screens/logs/logs_filters_modal.dart';
|
import 'package:adguard_home_manager/screens/logs/logs_filters_modal.dart';
|
||||||
|
|
||||||
import 'package:adguard_home_manager/classes/process_modal.dart';
|
import 'package:adguard_home_manager/classes/process_modal.dart';
|
||||||
import 'package:adguard_home_manager/routes/router_globals.dart';
|
|
||||||
import 'package:adguard_home_manager/constants/enums.dart';
|
import 'package:adguard_home_manager/constants/enums.dart';
|
||||||
import 'package:adguard_home_manager/functions/compare_versions.dart';
|
import 'package:adguard_home_manager/functions/compare_versions.dart';
|
||||||
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
||||||
|
@ -464,7 +463,7 @@ class _LogsListWidgetState extends State<LogsListWidget> {
|
||||||
isLogSelected: widget.selectedLog != null && widget.selectedLog == logsProvider.logsData!.data[index],
|
isLogSelected: widget.selectedLog != null && widget.selectedLog == logsProvider.logsData!.data[index],
|
||||||
onLogTap: (log) {
|
onLogTap: (log) {
|
||||||
if (!widget.twoColumns) {
|
if (!widget.twoColumns) {
|
||||||
rootNavigatorKey.currentState!.push(
|
Navigator.of(context).push(
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
builder: (context) => LogDetailsScreen(
|
builder: (context) => LogDetailsScreen(
|
||||||
log: log,
|
log: log,
|
||||||
|
|
|
@ -12,7 +12,6 @@ import 'package:adguard_home_manager/widgets/confirm_action_modal.dart';
|
||||||
import 'package:adguard_home_manager/screens/settings/dhcp/dhcp_leases.dart';
|
import 'package:adguard_home_manager/screens/settings/dhcp/dhcp_leases.dart';
|
||||||
import 'package:adguard_home_manager/screens/settings/dhcp/select_interface_modal.dart';
|
import 'package:adguard_home_manager/screens/settings/dhcp/select_interface_modal.dart';
|
||||||
|
|
||||||
import 'package:adguard_home_manager/routes/router_globals.dart';
|
|
||||||
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
||||||
import 'package:adguard_home_manager/functions/snackbar.dart';
|
import 'package:adguard_home_manager/functions/snackbar.dart';
|
||||||
import 'package:adguard_home_manager/constants/enums.dart';
|
import 'package:adguard_home_manager/constants/enums.dart';
|
||||||
|
@ -706,7 +705,7 @@ class _DhcpScreenState extends State<DhcpScreen> {
|
||||||
color: Colors.transparent,
|
color: Colors.transparent,
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
rootNavigatorKey.currentState!.push(
|
Navigator.of(context).push(
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
builder: (context) => DhcpLeases(
|
builder: (context) => DhcpLeases(
|
||||||
items: dhcpProvider.dhcp!.dhcpStatus.leases,
|
items: dhcpProvider.dhcp!.dhcpStatus.leases,
|
||||||
|
@ -741,7 +740,7 @@ class _DhcpScreenState extends State<DhcpScreen> {
|
||||||
color: Colors.transparent,
|
color: Colors.transparent,
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
rootNavigatorKey.currentState!.push(
|
Navigator.of(context).push(
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
builder: (context) => DhcpLeases(
|
builder: (context) => DhcpLeases(
|
||||||
items: dhcpProvider.dhcp!.dhcpStatus.staticLeases,
|
items: dhcpProvider.dhcp!.dhcpStatus.staticLeases,
|
||||||
|
@ -786,7 +785,7 @@ class _DhcpScreenState extends State<DhcpScreen> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
rootNavigatorKey.currentState!.push(
|
Navigator.of(context).push(
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
builder: (context) => DhcpLeases(
|
builder: (context) => DhcpLeases(
|
||||||
items: dhcpProvider.dhcp!.dhcpStatus.leases,
|
items: dhcpProvider.dhcp!.dhcpStatus.leases,
|
||||||
|
@ -815,7 +814,7 @@ class _DhcpScreenState extends State<DhcpScreen> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
rootNavigatorKey.currentState!.push(
|
Navigator.of(context).push(
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
builder: (context) => DhcpLeases(
|
builder: (context) => DhcpLeases(
|
||||||
items: dhcpProvider.dhcp!.dhcpStatus.staticLeases,
|
items: dhcpProvider.dhcp!.dhcpStatus.staticLeases,
|
||||||
|
|
|
@ -14,7 +14,6 @@ import 'package:adguard_home_manager/screens/settings/dns/upstream_dns.dart';
|
||||||
import 'package:adguard_home_manager/widgets/custom_list_tile.dart';
|
import 'package:adguard_home_manager/widgets/custom_list_tile.dart';
|
||||||
|
|
||||||
import 'package:adguard_home_manager/constants/enums.dart';
|
import 'package:adguard_home_manager/constants/enums.dart';
|
||||||
import 'package:adguard_home_manager/routes/router_globals.dart';
|
|
||||||
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
||||||
import 'package:adguard_home_manager/providers/dns_provider.dart';
|
import 'package:adguard_home_manager/providers/dns_provider.dart';
|
||||||
import 'package:adguard_home_manager/functions/clear_dns_cache.dart';
|
import 'package:adguard_home_manager/functions/clear_dns_cache.dart';
|
||||||
|
@ -54,7 +53,7 @@ class _DnsSettingsState extends State<DnsSettings> {
|
||||||
SplitView.of(context).push(w);
|
SplitView.of(context).push(w);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
rootNavigatorKey.currentState!.push(
|
Navigator.of(context).push(
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
builder: (context) => w
|
builder: (context) => w
|
||||||
)
|
)
|
||||||
|
|
|
@ -12,7 +12,6 @@ import 'package:adguard_home_manager/screens/settings/general_settings/reorderab
|
||||||
import 'package:adguard_home_manager/widgets/custom_list_tile.dart';
|
import 'package:adguard_home_manager/widgets/custom_list_tile.dart';
|
||||||
import 'package:adguard_home_manager/widgets/section_label.dart';
|
import 'package:adguard_home_manager/widgets/section_label.dart';
|
||||||
|
|
||||||
import 'package:adguard_home_manager/routes/router_globals.dart';
|
|
||||||
import 'package:adguard_home_manager/functions/check_app_updates.dart';
|
import 'package:adguard_home_manager/functions/check_app_updates.dart';
|
||||||
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
||||||
import 'package:adguard_home_manager/functions/snackbar.dart';
|
import 'package:adguard_home_manager/functions/snackbar.dart';
|
||||||
|
@ -192,7 +191,7 @@ class _GeneralSettingsState extends State<GeneralSettings> {
|
||||||
icon: Icons.reorder_rounded,
|
icon: Icons.reorder_rounded,
|
||||||
title: AppLocalizations.of(context)!.topItemsOrder,
|
title: AppLocalizations.of(context)!.topItemsOrder,
|
||||||
subtitle: AppLocalizations.of(context)!.topItemsOrderDescription,
|
subtitle: AppLocalizations.of(context)!.topItemsOrderDescription,
|
||||||
onTap: () => rootNavigatorKey.currentState!.push(
|
onTap: () => Navigator.of(context).push(
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
builder: (context) => const ReorderableTopItemsHome()
|
builder: (context) => const ReorderableTopItemsHome()
|
||||||
)
|
)
|
||||||
|
|
|
@ -23,7 +23,6 @@ import 'package:adguard_home_manager/widgets/custom_settings_tile.dart';
|
||||||
import 'package:adguard_home_manager/widgets/section_label.dart';
|
import 'package:adguard_home_manager/widgets/section_label.dart';
|
||||||
import 'package:adguard_home_manager/widgets/custom_list_tile.dart';
|
import 'package:adguard_home_manager/widgets/custom_list_tile.dart';
|
||||||
|
|
||||||
import 'package:adguard_home_manager/routes/router_globals.dart';
|
|
||||||
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
||||||
import 'package:adguard_home_manager/constants/strings.dart';
|
import 'package:adguard_home_manager/constants/strings.dart';
|
||||||
import 'package:adguard_home_manager/functions/open_url.dart';
|
import 'package:adguard_home_manager/functions/open_url.dart';
|
||||||
|
@ -71,7 +70,7 @@ class Settings extends StatelessWidget {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
class SettingsWidget extends StatelessWidget {
|
class SettingsWidget extends StatefulWidget {
|
||||||
final bool twoColumns;
|
final bool twoColumns;
|
||||||
|
|
||||||
const SettingsWidget({
|
const SettingsWidget({
|
||||||
|
@ -79,6 +78,17 @@ class SettingsWidget extends StatelessWidget {
|
||||||
required this.twoColumns,
|
required this.twoColumns,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<SettingsWidget> createState() => _SettingsWidgetState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _SettingsWidgetState extends State<SettingsWidget> {
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
Provider.of<AppConfigProvider>(context, listen: false).setSelectedSettingsScreen(screen: null);
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final serversProvider = Provider.of<ServersProvider>(context);
|
final serversProvider = Provider.of<ServersProvider>(context);
|
||||||
|
@ -87,7 +97,7 @@ class SettingsWidget extends StatelessWidget {
|
||||||
|
|
||||||
final width = MediaQuery.of(context).size.width;
|
final width = MediaQuery.of(context).size.width;
|
||||||
|
|
||||||
if (!twoColumns && appConfigProvider.selectedSettingsScreen != null) {
|
if (!widget.twoColumns && appConfigProvider.selectedSettingsScreen != null) {
|
||||||
appConfigProvider.setSelectedSettingsScreen(screen: null);
|
appConfigProvider.setSelectedSettingsScreen(screen: null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,7 +109,7 @@ class SettingsWidget extends StatelessWidget {
|
||||||
required Widget screenToNavigate,
|
required Widget screenToNavigate,
|
||||||
required int thisItem
|
required int thisItem
|
||||||
}) {
|
}) {
|
||||||
if (twoColumns) {
|
if (widget.twoColumns) {
|
||||||
return CustomSettingsTile(
|
return CustomSettingsTile(
|
||||||
title: title,
|
title: title,
|
||||||
subtitle: subtitle,
|
subtitle: subtitle,
|
||||||
|
@ -120,7 +130,7 @@ class SettingsWidget extends StatelessWidget {
|
||||||
icon: icon,
|
icon: icon,
|
||||||
trailing: trailing,
|
trailing: trailing,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
rootNavigatorKey.currentState!.push(
|
Navigator.of(context).push(
|
||||||
MaterialPageRoute(builder: (context) => screenToNavigate)
|
MaterialPageRoute(builder: (context) => screenToNavigate)
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -191,7 +201,7 @@ class SettingsWidget extends StatelessWidget {
|
||||||
subtitle: AppLocalizations.of(context)!.dnsSettingsDescription,
|
subtitle: AppLocalizations.of(context)!.dnsSettingsDescription,
|
||||||
thisItem: 3,
|
thisItem: 3,
|
||||||
screenToNavigate: DnsSettings(
|
screenToNavigate: DnsSettings(
|
||||||
splitView: twoColumns,
|
splitView: widget.twoColumns,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
settingsTile(
|
settingsTile(
|
||||||
|
|
|
@ -1,18 +1,16 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:animations/animations.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:go_router/go_router.dart';
|
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||||
|
|
||||||
|
import 'package:adguard_home_manager/providers/app_config_provider.dart';
|
||||||
import 'package:adguard_home_manager/config/app_screens.dart';
|
import 'package:adguard_home_manager/config/app_screens.dart';
|
||||||
import 'package:adguard_home_manager/config/sizes.dart';
|
import 'package:adguard_home_manager/config/sizes.dart';
|
||||||
import 'package:adguard_home_manager/providers/servers_provider.dart';
|
import 'package:adguard_home_manager/providers/servers_provider.dart';
|
||||||
|
|
||||||
class Layout extends StatefulWidget {
|
class Layout extends StatefulWidget {
|
||||||
final StatefulNavigationShell navigationShell;
|
|
||||||
|
|
||||||
const Layout({
|
const Layout({
|
||||||
Key? key,
|
Key? key,
|
||||||
required this.navigationShell,
|
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -23,10 +21,7 @@ class _LayoutState extends State<Layout> {
|
||||||
bool _drawerExpanded = true;
|
bool _drawerExpanded = true;
|
||||||
|
|
||||||
void _goBranch(int index) {
|
void _goBranch(int index) {
|
||||||
widget.navigationShell.goBranch(
|
Provider.of<AppConfigProvider>(context, listen: false).setSelectedScreen(index);
|
||||||
index,
|
|
||||||
initialLocation: index == widget.navigationShell.currentIndex,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -34,6 +29,11 @@ class _LayoutState extends State<Layout> {
|
||||||
final width = MediaQuery.of(context).size.width;
|
final width = MediaQuery.of(context).size.width;
|
||||||
|
|
||||||
final serversProvider = Provider.of<ServersProvider>(context);
|
final serversProvider = Provider.of<ServersProvider>(context);
|
||||||
|
final appConfigProvider = Provider.of<AppConfigProvider>(context);
|
||||||
|
|
||||||
|
final screens = serversProvider.selectedServer != null
|
||||||
|
? screensServerConnected
|
||||||
|
: screensSelectServer;
|
||||||
|
|
||||||
String translatedName(String key) {
|
String translatedName(String key) {
|
||||||
switch (key) {
|
switch (key) {
|
||||||
|
@ -93,8 +93,7 @@ class _LayoutState extends State<Layout> {
|
||||||
(s) => DrawerTile(
|
(s) => DrawerTile(
|
||||||
icon: s.value.icon,
|
icon: s.value.icon,
|
||||||
title: translatedName(s.value.name),
|
title: translatedName(s.value.name),
|
||||||
isSelected:
|
isSelected: appConfigProvider.selectedScreen == s.key,
|
||||||
widget.navigationShell.currentIndex == s.key,
|
|
||||||
onSelect: () => _goBranch(s.key),
|
onSelect: () => _goBranch(s.key),
|
||||||
withoutTitle: !_drawerExpanded,
|
withoutTitle: !_drawerExpanded,
|
||||||
),
|
),
|
||||||
|
@ -104,8 +103,7 @@ class _LayoutState extends State<Layout> {
|
||||||
(s) => DrawerTile(
|
(s) => DrawerTile(
|
||||||
icon: s.value.icon,
|
icon: s.value.icon,
|
||||||
title: translatedName(s.value.name),
|
title: translatedName(s.value.name),
|
||||||
isSelected:
|
isSelected: appConfigProvider.selectedScreen == s.key,
|
||||||
widget.navigationShell.currentIndex == s.key,
|
|
||||||
onSelect: () => _goBranch(s.key),
|
onSelect: () => _goBranch(s.key),
|
||||||
withoutTitle: !_drawerExpanded,
|
withoutTitle: !_drawerExpanded,
|
||||||
),
|
),
|
||||||
|
@ -114,7 +112,17 @@ class _LayoutState extends State<Layout> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: widget.navigationShell
|
child: PageTransitionSwitcher(
|
||||||
|
duration: const Duration(milliseconds: 200),
|
||||||
|
transitionBuilder: (
|
||||||
|
(child, primaryAnimation, secondaryAnimation) => FadeThroughTransition(
|
||||||
|
animation: primaryAnimation,
|
||||||
|
secondaryAnimation: secondaryAnimation,
|
||||||
|
child: child,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
child: screens[appConfigProvider.selectedScreen].child,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
@ -126,18 +134,28 @@ class _LayoutState extends State<Layout> {
|
||||||
: screensSelectServer;
|
: screensSelectServer;
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
body: widget.navigationShell,
|
body: PageTransitionSwitcher(
|
||||||
|
duration: const Duration(milliseconds: 200),
|
||||||
|
transitionBuilder: (
|
||||||
|
(child, primaryAnimation, secondaryAnimation) => FadeThroughTransition(
|
||||||
|
animation: primaryAnimation,
|
||||||
|
secondaryAnimation: secondaryAnimation,
|
||||||
|
child: child,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
child: screens[appConfigProvider.selectedScreen].child,
|
||||||
|
),
|
||||||
bottomNavigationBar: NavigationBar(
|
bottomNavigationBar: NavigationBar(
|
||||||
selectedIndex: (serversProvider.selectedServer == null || serversProvider.apiClient == null) && widget.navigationShell.currentIndex > 1
|
selectedIndex: (serversProvider.selectedServer == null || serversProvider.apiClient == null) && appConfigProvider.selectedScreen > 1
|
||||||
? 0
|
? 0
|
||||||
: widget.navigationShell.currentIndex,
|
: appConfigProvider.selectedScreen,
|
||||||
onDestinationSelected: (s) => _goBranch(s),
|
onDestinationSelected: (s) => _goBranch(s),
|
||||||
destinations: screens.asMap().entries.map((screen) => NavigationDestination(
|
destinations: screens.asMap().entries.map((screen) => NavigationDestination(
|
||||||
icon: Stack(
|
icon: Stack(
|
||||||
children: [
|
children: [
|
||||||
Icon(
|
Icon(
|
||||||
screen.value.icon,
|
screen.value.icon,
|
||||||
color: widget.navigationShell.currentIndex == screen.key
|
color: appConfigProvider.selectedScreen == screen.key
|
||||||
? Theme.of(context).colorScheme.onSecondaryContainer
|
? Theme.of(context).colorScheme.onSecondaryContainer
|
||||||
: Theme.of(context).colorScheme.onSurfaceVariant,
|
: Theme.of(context).colorScheme.onSurfaceVariant,
|
||||||
),
|
),
|
||||||
|
|
16
pubspec.lock
16
pubspec.lock
|
@ -318,14 +318,6 @@ packages:
|
||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
go_router:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: go_router
|
|
||||||
sha256: e156bc1b2088eb5ece9351bccd48c3e1719a4858eacbd44e59162e98a68205d1
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "12.0.1"
|
|
||||||
html:
|
html:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -398,14 +390,6 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.2"
|
version: "1.0.2"
|
||||||
logging:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: logging
|
|
||||||
sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.2.0"
|
|
||||||
markdown:
|
markdown:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -74,7 +74,6 @@ dependencies:
|
||||||
flutter_dotenv: ^5.0.2
|
flutter_dotenv: ^5.0.2
|
||||||
flutter_reorderable_list: ^1.3.1
|
flutter_reorderable_list: ^1.3.1
|
||||||
pie_chart: ^5.3.2
|
pie_chart: ^5.3.2
|
||||||
go_router: ^12.0.1
|
|
||||||
flutter_hooks: ^0.20.3
|
flutter_hooks: ^0.20.3
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
|
|
Loading…
Add table
Reference in a new issue