mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-04-19 21:39:16 +00:00
Navigate with root key
This commit is contained in:
parent
5c50a486c4
commit
c391c76f5a
11 changed files with 121 additions and 95 deletions
|
@ -13,6 +13,26 @@ 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: "/",
|
||||
|
@ -29,14 +49,10 @@ final List<RouteBase> routes = [
|
|||
GoRoute(
|
||||
parentNavigatorKey: homeNavigatorKey,
|
||||
path: RoutesNames.home,
|
||||
pageBuilder: (context, state) {
|
||||
if (isDesktop(MediaQuery.of(context).size.width)) {
|
||||
return const NoTransitionPage(child: Home());
|
||||
}
|
||||
else {
|
||||
return const MaterialPage(child: Home());
|
||||
}
|
||||
},
|
||||
pageBuilder: (context, state) => routePage(
|
||||
context: context,
|
||||
child: const Home()
|
||||
)
|
||||
),
|
||||
]
|
||||
),
|
||||
|
@ -46,14 +62,10 @@ final List<RouteBase> routes = [
|
|||
GoRoute(
|
||||
parentNavigatorKey: clientsNavigatorKey,
|
||||
path: RoutesNames.clients,
|
||||
pageBuilder: (context, state) {
|
||||
if (isDesktop(MediaQuery.of(context).size.width)) {
|
||||
return const NoTransitionPage(child: Clients());
|
||||
}
|
||||
else {
|
||||
return const MaterialPage(child: Clients());
|
||||
}
|
||||
},
|
||||
pageBuilder: (context, state) => routePage(
|
||||
context: context,
|
||||
child: const Clients()
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
|
@ -63,14 +75,10 @@ final List<RouteBase> routes = [
|
|||
GoRoute(
|
||||
parentNavigatorKey: logsNavigatorKey,
|
||||
path: RoutesNames.logs,
|
||||
pageBuilder: (context, state) {
|
||||
if (isDesktop(MediaQuery.of(context).size.width)) {
|
||||
return const NoTransitionPage(child: Logs());
|
||||
}
|
||||
else {
|
||||
return const MaterialPage(child: Logs());
|
||||
}
|
||||
},
|
||||
pageBuilder: (context, state) => routePage(
|
||||
context: context,
|
||||
child: const Logs()
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
|
@ -80,14 +88,10 @@ final List<RouteBase> routes = [
|
|||
GoRoute(
|
||||
parentNavigatorKey: filtersNavigatorKey,
|
||||
path: RoutesNames.filters,
|
||||
pageBuilder: (context, state) {
|
||||
if (isDesktop(MediaQuery.of(context).size.width)) {
|
||||
return const NoTransitionPage(child: Filters());
|
||||
}
|
||||
else {
|
||||
return const MaterialPage(child: Filters());
|
||||
}
|
||||
},
|
||||
pageBuilder: (context, state) => routePage(
|
||||
context: context,
|
||||
child: const Filters()
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
|
@ -97,14 +101,10 @@ final List<RouteBase> routes = [
|
|||
GoRoute(
|
||||
parentNavigatorKey: settingsNavigatorKey,
|
||||
path: RoutesNames.settings,
|
||||
pageBuilder: (context, state) {
|
||||
if (isDesktop(MediaQuery.of(context).size.width)) {
|
||||
return const NoTransitionPage(child: Settings());
|
||||
}
|
||||
else {
|
||||
return const MaterialPage(child: Settings());
|
||||
}
|
||||
},
|
||||
pageBuilder: (context, state) => routePage(
|
||||
context: context,
|
||||
child: const Settings()
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
|
@ -113,14 +113,10 @@ final List<RouteBase> routes = [
|
|||
routes: [
|
||||
GoRoute(
|
||||
path: RoutesNames.connect,
|
||||
pageBuilder: (context, state) {
|
||||
if (isDesktop(MediaQuery.of(context).size.width)) {
|
||||
return const NoTransitionPage(child: Connect());
|
||||
}
|
||||
else {
|
||||
return const MaterialPage(child: Connect());
|
||||
}
|
||||
},
|
||||
pageBuilder: (context, state) => routePage(
|
||||
context: context,
|
||||
child: const Connect()
|
||||
)
|
||||
)
|
||||
]
|
||||
),
|
||||
|
|
|
@ -8,6 +8,7 @@ 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_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/models/logs.dart';
|
||||
import 'package:adguard_home_manager/providers/app_config_provider.dart';
|
||||
|
@ -212,12 +213,14 @@ class _LogsListClientState extends State<LogsListClient> {
|
|||
)
|
||||
}
|
||||
else {
|
||||
Navigator.push(context, MaterialPageRoute(
|
||||
rootNavigatorKey.currentState!.push(
|
||||
MaterialPageRoute(
|
||||
builder: (context) => LogDetailsScreen(
|
||||
log: log,
|
||||
dialog: false
|
||||
)
|
||||
))
|
||||
)
|
||||
)
|
||||
}
|
||||
},
|
||||
twoColumns: widget.splitView,
|
||||
|
|
|
@ -8,6 +8,7 @@ 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/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/models/clients.dart';
|
||||
import 'package:adguard_home_manager/providers/app_config_provider.dart';
|
||||
|
@ -71,9 +72,11 @@ class _ClientsListsState extends State<ClientsLists> with TickerProviderStateMix
|
|||
SplitView.of(context).push(w);
|
||||
}
|
||||
else {
|
||||
Navigator.push(context, MaterialPageRoute(
|
||||
rootNavigatorKey.currentState!.push(
|
||||
MaterialPageRoute(
|
||||
builder: (context) => w,
|
||||
));
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -89,9 +92,11 @@ class _ClientsListsState extends State<ClientsLists> with TickerProviderStateMix
|
|||
SplitView.of(context).push(w);
|
||||
}
|
||||
else {
|
||||
Navigator.push(context, MaterialPageRoute(
|
||||
rootNavigatorKey.currentState!.push(
|
||||
MaterialPageRoute(
|
||||
builder: (context) => w,
|
||||
));
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ 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/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/providers/status_provider.dart';
|
||||
import 'package:adguard_home_manager/classes/process_modal.dart';
|
||||
|
@ -202,7 +203,7 @@ class _FiltersState extends State<Filters> {
|
|||
);
|
||||
}
|
||||
else {
|
||||
Navigator.of(context).push(
|
||||
rootNavigatorKey.currentState!.push(
|
||||
MaterialPageRoute(
|
||||
builder: (context) => ListDetailsScreen(
|
||||
listId: filter.id,
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
||||
import 'package:adguard_home_manager/screens/servers/servers.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/providers/status_provider.dart';
|
||||
import 'package:adguard_home_manager/functions/open_url.dart';
|
||||
|
@ -32,7 +33,7 @@ class HomeAppBar extends StatelessWidget {
|
|||
|
||||
void navigateServers() {
|
||||
Future.delayed(const Duration(milliseconds: 0), (() {
|
||||
Navigator.of(context).push(
|
||||
rootNavigatorKey.currentState!.push(
|
||||
MaterialPageRoute(builder: (context) => const Servers())
|
||||
);
|
||||
}));
|
||||
|
|
|
@ -11,6 +11,7 @@ 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.dart';
|
||||
|
||||
import 'package:adguard_home_manager/routes/router_globals.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/logs_provider.dart';
|
||||
|
@ -217,7 +218,7 @@ class _TopItemsState extends State<TopItems> {
|
|||
)
|
||||
}
|
||||
else {
|
||||
Navigator.of(context).push(
|
||||
rootNavigatorKey.currentState!.push(
|
||||
MaterialPageRoute(
|
||||
builder: (context) => TopItemsScreen(
|
||||
type: widget.type,
|
||||
|
|
|
@ -12,6 +12,7 @@ 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/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/functions/compare_versions.dart';
|
||||
import 'package:adguard_home_manager/functions/desktop_mode.dart';
|
||||
|
@ -463,12 +464,14 @@ class _LogsListWidgetState extends State<LogsListWidget> {
|
|||
isLogSelected: widget.selectedLog != null && widget.selectedLog == logsProvider.logsData!.data[index],
|
||||
onLogTap: (log) {
|
||||
if (!widget.twoColumns) {
|
||||
Navigator.push(context, MaterialPageRoute(
|
||||
rootNavigatorKey.currentState!.push(
|
||||
MaterialPageRoute(
|
||||
builder: (context) => LogDetailsScreen(
|
||||
log: log,
|
||||
dialog: false,
|
||||
)
|
||||
));
|
||||
)
|
||||
);
|
||||
}
|
||||
widget.onLogSelected(log);
|
||||
},
|
||||
|
|
|
@ -12,6 +12,7 @@ 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/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/snackbar.dart';
|
||||
import 'package:adguard_home_manager/constants/enums.dart';
|
||||
|
@ -705,12 +706,14 @@ class _DhcpScreenState extends State<DhcpScreen> {
|
|||
color: Colors.transparent,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Navigator.push(context, MaterialPageRoute(
|
||||
rootNavigatorKey.currentState!.push(
|
||||
MaterialPageRoute(
|
||||
builder: (context) => DhcpLeases(
|
||||
items: dhcpProvider.dhcp!.dhcpStatus.leases,
|
||||
staticLeases: false,
|
||||
)
|
||||
));
|
||||
)
|
||||
);
|
||||
},
|
||||
child: Container(
|
||||
padding: const EdgeInsets.all(16),
|
||||
|
@ -738,12 +741,14 @@ class _DhcpScreenState extends State<DhcpScreen> {
|
|||
color: Colors.transparent,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Navigator.push(context, MaterialPageRoute(
|
||||
rootNavigatorKey.currentState!.push(
|
||||
MaterialPageRoute(
|
||||
builder: (context) => DhcpLeases(
|
||||
items: dhcpProvider.dhcp!.dhcpStatus.staticLeases,
|
||||
staticLeases: true,
|
||||
)
|
||||
));
|
||||
)
|
||||
);
|
||||
},
|
||||
child: Container(
|
||||
padding: const EdgeInsets.all(16),
|
||||
|
@ -781,12 +786,14 @@ class _DhcpScreenState extends State<DhcpScreen> {
|
|||
);
|
||||
}
|
||||
else {
|
||||
Navigator.push(context, MaterialPageRoute(
|
||||
rootNavigatorKey.currentState!.push(
|
||||
MaterialPageRoute(
|
||||
builder: (context) => DhcpLeases(
|
||||
items: dhcpProvider.dhcp!.dhcpStatus.leases,
|
||||
staticLeases: false,
|
||||
)
|
||||
));
|
||||
)
|
||||
);
|
||||
}
|
||||
},
|
||||
child: Row(
|
||||
|
@ -808,12 +815,14 @@ class _DhcpScreenState extends State<DhcpScreen> {
|
|||
);
|
||||
}
|
||||
else {
|
||||
Navigator.push(context, MaterialPageRoute(
|
||||
rootNavigatorKey.currentState!.push(
|
||||
MaterialPageRoute(
|
||||
builder: (context) => DhcpLeases(
|
||||
items: dhcpProvider.dhcp!.dhcpStatus.staticLeases,
|
||||
staticLeases: true,
|
||||
)
|
||||
));
|
||||
)
|
||||
);
|
||||
}
|
||||
},
|
||||
child: Row(
|
||||
|
|
|
@ -14,6 +14,7 @@ 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/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/providers/dns_provider.dart';
|
||||
import 'package:adguard_home_manager/functions/clear_dns_cache.dart';
|
||||
|
@ -53,9 +54,11 @@ class _DnsSettingsState extends State<DnsSettings> {
|
|||
SplitView.of(context).push(w);
|
||||
}
|
||||
else {
|
||||
Navigator.push(context, MaterialPageRoute(
|
||||
rootNavigatorKey.currentState!.push(
|
||||
MaterialPageRoute(
|
||||
builder: (context) => w
|
||||
));
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ 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/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/desktop_mode.dart';
|
||||
import 'package:adguard_home_manager/functions/snackbar.dart';
|
||||
|
@ -191,9 +192,11 @@ class _GeneralSettingsState extends State<GeneralSettings> {
|
|||
icon: Icons.reorder_rounded,
|
||||
title: AppLocalizations.of(context)!.topItemsOrder,
|
||||
subtitle: AppLocalizations.of(context)!.topItemsOrderDescription,
|
||||
onTap: () => Navigator.push(context, MaterialPageRoute(
|
||||
onTap: () => rootNavigatorKey.currentState!.push(
|
||||
MaterialPageRoute(
|
||||
builder: (context) => const ReorderableTopItemsHome()
|
||||
)),
|
||||
)
|
||||
)
|
||||
),
|
||||
CustomListTile(
|
||||
icon: Icons.donut_large_rounded,
|
||||
|
|
|
@ -23,6 +23,7 @@ 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/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/constants/strings.dart';
|
||||
import 'package:adguard_home_manager/functions/open_url.dart';
|
||||
|
@ -119,7 +120,7 @@ class SettingsWidget extends StatelessWidget {
|
|||
icon: icon,
|
||||
trailing: trailing,
|
||||
onTap: () {
|
||||
Navigator.of(context).push(
|
||||
rootNavigatorKey.currentState!.push(
|
||||
MaterialPageRoute(builder: (context) => screenToNavigate)
|
||||
);
|
||||
},
|
||||
|
|
Loading…
Add table
Reference in a new issue