From de8a7818c390b6f8e6e51a9aa60f43ab915e49d5 Mon Sep 17 00:00:00 2001 From: Juan Gilsanz Polo Date: Tue, 2 May 2023 13:42:01 +0200 Subject: [PATCH] Fixed split view --- lib/l10n/app_en.arb | 4 ++- lib/l10n/app_es.arb | 4 ++- lib/providers/app_config_provider.dart | 6 ++-- lib/screens/clients/clients.dart | 14 +++++++- lib/screens/settings/settings.dart | 39 +++++++++++++-------- lib/widgets/bottom_nav_bar.dart | 2 +- lib/widgets/custom_settings_tile.dart | 48 +++++++++----------------- lib/widgets/navigation_rail.dart | 2 +- 8 files changed, 66 insertions(+), 53 deletions(-) diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 8017577..ea3738d 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -607,5 +607,7 @@ "safeSearchSettings": "Safe search settings", "loadingSafeSearchSettings": "Loading safe search settings...", "safeSearchSettingsNotLoaded": "Error when loading safe search settings.", - "loadingLogsSettings": "Loading logs settings..." + "loadingLogsSettings": "Loading logs settings...", + "selectOptionLeftColumn": "Select an option of the left column", + "selectClientLeftColumn": "Select a client of the left column" } \ No newline at end of file diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 61aa7de..6bc3ded 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -607,5 +607,7 @@ "safeSearchSettings": "Configuración de búsqueda segura", "loadingSafeSearchSettings": "Cargando configuración de búsqueda segura...", "safeSearchSettingsNotLoaded": "Error al cargar la configuración de búsqueda segura.", - "loadingLogsSettings": "Cargando configuración de registros..." + "loadingLogsSettings": "Cargando configuración de registros...", + "selectOptionLeftColumn": "Selecciona una opción de la columna de la izquierda", + "selectClientLeftColumn": "Selecciona un cliente de la columna de la izquierda" } \ No newline at end of file diff --git a/lib/providers/app_config_provider.dart b/lib/providers/app_config_provider.dart index 0dc8ac3..caa7dff 100644 --- a/lib/providers/app_config_provider.dart +++ b/lib/providers/app_config_provider.dart @@ -166,9 +166,11 @@ class AppConfigProvider with ChangeNotifier { notifyListeners(); } - void setSelectedSettingsScreen(int? screen) { + void setSelectedSettingsScreen({required int? screen, bool? notify}) { _selectedSettingsScreen = screen; - notifyListeners(); + if (notify == true) { + notifyListeners(); + } } Future setOverrideSslCheck(bool status) async { diff --git a/lib/screens/clients/clients.dart b/lib/screens/clients/clients.dart index 91d7dd1..bdaf046 100644 --- a/lib/screens/clients/clients.dart +++ b/lib/screens/clients/clients.dart @@ -172,8 +172,20 @@ class _ClientsWidgetState extends State with TickerProviderStateM if (!(Platform.isAndroid || Platform.isIOS)) { if (width > 900) { return SplitView.material( - breakpoint: 900, hideDivider: true, + placeholder: Center( + child: Padding( + padding: const EdgeInsets.all(24), + child: Text( + AppLocalizations.of(context)!.selectClientLeftColumn, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 24, + color: Theme.of(context).colorScheme.onSurfaceVariant + ), + ), + ), + ), child: ClientsDesktopView( serversProvider: serversProvider, appConfigProvider: appConfigProvider, diff --git a/lib/screens/settings/settings.dart b/lib/screens/settings/settings.dart index 74f8a40..fe93473 100644 --- a/lib/screens/settings/settings.dart +++ b/lib/screens/settings/settings.dart @@ -29,6 +29,7 @@ import 'package:adguard_home_manager/functions/compare_versions.dart'; import 'package:adguard_home_manager/constants/urls.dart'; import 'package:adguard_home_manager/providers/servers_provider.dart'; import 'package:adguard_home_manager/providers/app_config_provider.dart'; + class Settings extends StatelessWidget { const Settings({Key? key}) : super(key: key); @@ -36,11 +37,23 @@ class Settings extends StatelessWidget { Widget build(BuildContext context) { final width = MediaQuery.of(context).size.width; - if (width > 900 || !(Platform.isAndroid || Platform.isIOS)) { - return const SplitView.material( - breakpoint: 900, + if (width > 900) { + return SplitView.material( hideDivider: true, - child: SettingsWidget(), + placeholder: Center( + child: Padding( + padding: const EdgeInsets.all(24), + child: Text( + AppLocalizations.of(context)!.selectOptionLeftColumn, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 24, + color: Theme.of(context).colorScheme.onSurfaceVariant + ), + ), + ), + ), + child: const SettingsWidget(), ); } else { @@ -58,6 +71,10 @@ class SettingsWidget extends StatelessWidget { final width = MediaQuery.of(context).size.width; + if (width <= 900 && appConfigProvider.selectedSettingsScreen != null) { + appConfigProvider.setSelectedSettingsScreen(screen: null); + } + Widget settingsTile({ required String title, required String subtitle, @@ -75,7 +92,7 @@ class SettingsWidget extends StatelessWidget { thisItem: thisItem, selectedItem: appConfigProvider.selectedSettingsScreen, onTap: () { - appConfigProvider.setSelectedSettingsScreen(thisItem); + appConfigProvider.setSelectedSettingsScreen(screen: thisItem, notify: true); SplitView.of(context).setSecondary(screenToNavigate); }, ); @@ -87,15 +104,9 @@ class SettingsWidget extends StatelessWidget { icon: icon, trailing: trailing, onTap: () { - appConfigProvider.setSelectedSettingsScreen(thisItem); - if (!(Platform.isIOS || Platform.isAndroid)) { - SplitView.of(context).setSecondary(screenToNavigate); - } - else { - Navigator.of(context).push( - MaterialPageRoute(builder: (context) => screenToNavigate) - ); - } + Navigator.of(context).push( + MaterialPageRoute(builder: (context) => screenToNavigate) + ); }, ); } diff --git a/lib/widgets/bottom_nav_bar.dart b/lib/widgets/bottom_nav_bar.dart index b5511c1..36abbbe 100644 --- a/lib/widgets/bottom_nav_bar.dart +++ b/lib/widgets/bottom_nav_bar.dart @@ -91,7 +91,7 @@ class BottomNavBar extends StatelessWidget { } // Reset settings selected screen if (value != screens.length-1) { - appConfigProvider.setSelectedSettingsScreen(null); + appConfigProvider.setSelectedSettingsScreen(screen: null); } appConfigProvider.setSelectedScreen(value); }, diff --git a/lib/widgets/custom_settings_tile.dart b/lib/widgets/custom_settings_tile.dart index 276d517..554f13b 100644 --- a/lib/widgets/custom_settings_tile.dart +++ b/lib/widgets/custom_settings_tile.dart @@ -26,8 +26,6 @@ class CustomSettingsTile extends StatelessWidget { @override Widget build(BuildContext context) { - final width = MediaQuery.of(context).size.width; - Widget tileBody = Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -80,41 +78,27 @@ class CustomSettingsTile extends StatelessWidget { ], ); - if (width < 700) { - return Material( + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 12), + child: Material( color: Colors.transparent, + borderRadius: BorderRadius.circular(28), child: InkWell( - onTap: onTap, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), - child: tileBody, - ) - ), - ); - } - else { - return Padding( - padding: const EdgeInsets.symmetric(horizontal: 12), - child: Material( - color: Colors.transparent, borderRadius: BorderRadius.circular(28), - child: InkWell( - borderRadius: BorderRadius.circular(28), - onTap: onTap, - child: Container( - width: double.maxFinite, - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(28), - color: thisItem == selectedItem - ? Theme.of(context).colorScheme.primaryContainer - : null - ), - child: tileBody + onTap: onTap, + child: Container( + width: double.maxFinite, + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(28), + color: thisItem == selectedItem + ? Theme.of(context).colorScheme.primaryContainer + : null ), + child: tileBody ), ), - ); - } + ), + ); } } \ No newline at end of file diff --git a/lib/widgets/navigation_rail.dart b/lib/widgets/navigation_rail.dart index 4837e0f..6dc028f 100644 --- a/lib/widgets/navigation_rail.dart +++ b/lib/widgets/navigation_rail.dart @@ -68,7 +68,7 @@ class SideNavigationRail extends StatelessWidget { } // Reset settings selected screen if (value != screens.length-1) { - appConfigProvider.setSelectedSettingsScreen(null); + appConfigProvider.setSelectedSettingsScreen(screen: null); } appConfigProvider.setSelectedScreen(value); },