diff --git a/lib/screens/clients/added_list.dart b/lib/screens/clients/added_list.dart index 08621ce..8f27491 100644 --- a/lib/screens/clients/added_list.dart +++ b/lib/screens/clients/added_list.dart @@ -185,7 +185,9 @@ class _AddedListState extends State { client: widget.data[index], onTap: widget.onClientSelected, onLongPress: openOptionsModal, - onEdit: openClientModal, + onEdit: statusProvider.serverStatus != null + ? (c) => openClientModal(c) + : null, onDelete: openDeleteModal, splitView: widget.splitView, serverVersion: statusProvider.serverStatus!.serverVersion, diff --git a/lib/screens/clients/client/added_client_tile.dart b/lib/screens/clients/client/added_client_tile.dart index 356d7be..9db4edb 100644 --- a/lib/screens/clients/client/added_client_tile.dart +++ b/lib/screens/clients/client/added_client_tile.dart @@ -14,7 +14,7 @@ class AddedClientTile extends StatelessWidget { final Client client; final void Function(Client) onTap; final void Function(Client) onLongPress; - final void Function(Client) onEdit; + final void Function(Client)? onEdit; final void Function(Client) onDelete; final Client? selectedClient; final bool? splitView; @@ -25,7 +25,7 @@ class AddedClientTile extends StatelessWidget { required this.client, required this.onTap, required this.onLongPress, - required this.onEdit, + this.onEdit, required this.onDelete, this.selectedClient, required this.splitView, @@ -44,12 +44,12 @@ class AddedClientTile extends StatelessWidget { borderRadius: BorderRadius.circular(28), child: ContextMenuArea( builder: (context) => [ - CustomListTile( + if (onEdit != null) CustomListTile( title: AppLocalizations.of(context)!.edit, icon: Icons.edit_rounded, onTap: () { Navigator.pop(context); - onEdit(client); + onEdit!(client); } ), CustomListTile( @@ -185,12 +185,12 @@ class AddedClientTile extends StatelessWidget { else { return ContextMenuArea( builder: (context) => [ - CustomListTile( + if (onEdit != null) CustomListTile( title: AppLocalizations.of(context)!.seeDetails, icon: Icons.file_open_rounded, onTap: () { Navigator.pop(context); - onEdit(client); + onEdit!(client); } ), CustomListTile( diff --git a/lib/screens/clients/fab.dart b/lib/screens/clients/fab.dart index f9697f6..ce291c2 100644 --- a/lib/screens/clients/fab.dart +++ b/lib/screens/clients/fab.dart @@ -1,19 +1,16 @@ // ignore_for_file: use_build_context_synchronously -import 'dart:io'; - 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/clients/client/client_screen.dart'; - import 'package:adguard_home_manager/screens/clients/client/client_screen_functions.dart'; + import 'package:adguard_home_manager/functions/snackbar.dart'; +import 'package:adguard_home_manager/providers/status_provider.dart'; import 'package:adguard_home_manager/providers/clients_provider.dart'; import 'package:adguard_home_manager/models/clients.dart'; import 'package:adguard_home_manager/classes/process_modal.dart'; -import 'package:adguard_home_manager/providers/status_provider.dart'; import 'package:adguard_home_manager/providers/app_config_provider.dart'; class ClientsFab extends StatelessWidget { @@ -21,8 +18,8 @@ class ClientsFab extends StatelessWidget { @override Widget build(BuildContext context) { - final appConfigProvider = Provider.of(context); final statusProvider = Provider.of(context); + final appConfigProvider = Provider.of(context); final clientsProvider = Provider.of(context); final width = MediaQuery.of(context).size.width; @@ -59,9 +56,14 @@ class ClientsFab extends StatelessWidget { ); } - return FloatingActionButton( - onPressed: openAddClient, - child: const Icon(Icons.add), - ); + if (statusProvider.serverStatus != null) { + return FloatingActionButton( + onPressed: openAddClient, + child: const Icon(Icons.add), + ); + } + else { + return const SizedBox(); + } } } \ No newline at end of file diff --git a/lib/screens/clients/options_modal.dart b/lib/screens/clients/options_modal.dart index 61dea10..d779aae 100644 --- a/lib/screens/clients/options_modal.dart +++ b/lib/screens/clients/options_modal.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:adguard_home_manager/providers/status_provider.dart'; import 'package:adguard_home_manager/widgets/custom_list_tile_dialog.dart'; class OptionsModal extends StatelessWidget { @@ -15,6 +17,8 @@ class OptionsModal extends StatelessWidget { @override Widget build(BuildContext context) { + final statusProvider = Provider.of(context); + return AlertDialog( contentPadding: const EdgeInsets.symmetric( horizontal: 0, @@ -39,7 +43,7 @@ class OptionsModal extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ const SizedBox(height: 24), - CustomListTileDialog( + if (statusProvider.serverStatus != null) CustomListTileDialog( onTap: () { Navigator.pop(context); onEdit(); diff --git a/lib/screens/clients/search_clients.dart b/lib/screens/clients/search_clients.dart index 37544f8..99d430c 100644 --- a/lib/screens/clients/search_clients.dart +++ b/lib/screens/clients/search_clients.dart @@ -231,7 +231,9 @@ class _SearchClientsState extends State { : const EdgeInsets.symmetric(horizontal: 20, vertical: 15), isThreeLine: true, onLongPress: () => openOptionsModal(clientsScreen[index]), - onTap: () => openClientModal(clientsScreen[index]), + onTap: statusProvider.serverStatus != null + ? () => openClientModal(clientsScreen[index]) + : null, title: Padding( padding: const EdgeInsets.only(bottom: 5), child: Text(