Fixed issue snackbar

This commit is contained in:
Juan Gilsanz Polo 2022-10-09 20:03:17 +02:00
parent d5324117bb
commit 66e41af7c8
11 changed files with 201 additions and 184 deletions

View file

@ -0,0 +1,24 @@
// ignore_for_file: use_build_context_synchronously
import 'package:flutter/material.dart';
import 'package:adguard_home_manager/providers/app_config_provider.dart';
void showSnacbkar({
required BuildContext context,
required AppConfigProvider appConfigProvider,
required String label,
required Color color
}) async {
if (appConfigProvider.showingSnackbar == true) {
ScaffoldMessenger.of(context).clearSnackBars();
await Future.delayed(const Duration(milliseconds: 500));
}
appConfigProvider.setShowingSnackbar(true);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(label),
backgroundColor: color,
)
).closed.then((value) => appConfigProvider.setShowingSnackbar(false));
}

View file

@ -212,7 +212,7 @@
"addCustomRule": "Añadir regla personalizada",
"removeCustomRule": "Eliminar regla personalizada",
"removeCustomRuleMessage": "¿Estás seguro que deseas eliminar esta regla personalizada?",
"updatingRules": "Updating custom rules...",
"updatingRules": "Actualizando reglas personalizadas...",
"ruleRemovedSuccessfully": "Regla eliminada correctamente",
"ruleNotRemoved": "No se ha podido eliminar la regla",
"ruleAddedSuccessfully": "Regla añadida correctamente",

View file

@ -126,11 +126,8 @@ class AppConfigProvider with ChangeNotifier {
notifyListeners();
}
void setShowingSnackbar() async {
_showingSnackbar = true;
notifyListeners();
await Future.delayed(const Duration(milliseconds: 4500));
_showingSnackbar = false;
void setShowingSnackbar(bool status) async {
_showingSnackbar = status;
notifyListeners();
}

View file

@ -12,6 +12,7 @@ import 'package:adguard_home_manager/screens/clients/fab.dart';
import 'package:adguard_home_manager/screens/clients/options_modal.dart';
import 'package:adguard_home_manager/screens/clients/client_modal.dart';
import 'package:adguard_home_manager/functions/snackbar.dart';
import 'package:adguard_home_manager/classes/process_modal.dart';
import 'package:adguard_home_manager/services/http_requests.dart';
import 'package:adguard_home_manager/models/clients.dart';
@ -87,22 +88,22 @@ class _AddedListState extends State<AddedList> {
}
}).toList();
serversProvider.setClientsData(clientsData);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.clientUpdatedSuccessfully),
backgroundColor: Colors.green,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.clientUpdatedSuccessfully,
color: Colors.green
);
}
else {
appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.clientNotUpdated),
backgroundColor: Colors.red,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.clientNotUpdated,
color: Colors.red
);
}
}
@ -119,22 +120,22 @@ class _AddedListState extends State<AddedList> {
ClientsData clientsData = serversProvider.clients.data!;
clientsData.clients = clientsData.clients.where((c) => c.name != client.name).toList();
serversProvider.setClientsData(clientsData);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.clientDeletedSuccessfully),
backgroundColor: Colors.green,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.clientDeletedSuccessfully,
color: Colors.green
);
}
else {
appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.clientNotDeleted),
backgroundColor: Colors.red,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.clientNotDeleted,
color: Colors.red
);
}
}

View file

@ -7,6 +7,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:adguard_home_manager/screens/clients/client_modal.dart';
import 'package:adguard_home_manager/functions/snackbar.dart';
import 'package:adguard_home_manager/models/clients.dart';
import 'package:adguard_home_manager/services/http_requests.dart';
import 'package:adguard_home_manager/models/clients_allowed_blocked.dart';
@ -52,31 +53,30 @@ class ClientsFab extends StatelessWidget {
blockedHosts: body['blocked_hosts'] ?? [],
)
);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.clientAddedSuccessfully),
backgroundColor: Colors.green,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.clientAddedSuccessfully,
color: Colors.green
);
}
else if (result['result'] == 'error' && result['message'] == 'client_another_list') {
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.clientAnotherList),
backgroundColor: Colors.red,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.clientAnotherList,
color: Colors.red
);
}
else {
appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.clientNotAdded),
backgroundColor: Colors.red,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.clientNotAdded,
color: Colors.red
);
}
}
@ -93,22 +93,22 @@ class ClientsFab extends StatelessWidget {
ClientsData clientsData = serversProvider.clients.data!;
clientsData.clients.add(client);
serversProvider.setClientsData(clientsData);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.clientAddedSuccessfully),
backgroundColor: Colors.green,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.clientAddedSuccessfully,
color: Colors.green
);
}
else {
appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.clientNotAdded),
backgroundColor: Colors.red,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.clientNotAdded,
color: Colors.red
);
}
}

View file

@ -8,6 +8,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:adguard_home_manager/screens/filters/fab.dart';
import 'package:adguard_home_manager/screens/filters/remove_custom_rule_modal.dart';
import 'package:adguard_home_manager/functions/snackbar.dart';
import 'package:adguard_home_manager/models/filtering.dart';
import 'package:adguard_home_manager/providers/app_config_provider.dart';
import 'package:adguard_home_manager/services/http_requests.dart';
@ -75,22 +76,22 @@ class _CustomRulesListState extends State<CustomRulesList> {
FilteringData filteringData = serversProvider.filtering.data!;
filteringData.userRules = newRules;
serversProvider.setFilteringData(filteringData);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.ruleRemovedSuccessfully),
backgroundColor: Colors.green,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.ruleRemovedSuccessfully,
color: Colors.green
);
}
else {
appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.ruleNotRemoved),
backgroundColor: Colors.red,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.ruleNotRemoved,
color: Colors.red
);
}
}

View file

@ -1,12 +1,13 @@
// ignore_for_file: use_build_context_synchronously
import 'package:adguard_home_manager/screens/filters/add_list_modal.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/filters/add_custom_rule.dart';
import 'package:adguard_home_manager/screens/filters/add_list_modal.dart';
import 'package:adguard_home_manager/functions/snackbar.dart';
import 'package:adguard_home_manager/services/http_requests.dart';
import 'package:adguard_home_manager/classes/process_modal.dart';
import 'package:adguard_home_manager/providers/app_config_provider.dart';
@ -41,22 +42,22 @@ class FiltersFab extends StatelessWidget {
FilteringData filteringData = serversProvider.filtering.data!;
filteringData.userRules = newRules;
serversProvider.setFilteringData(filteringData);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.ruleAddedSuccessfully),
backgroundColor: Colors.green,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.ruleAddedSuccessfully,
color: Colors.green
);
}
else {
appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.ruleNotAdded),
backgroundColor: Colors.red,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.ruleNotAdded,
color: Colors.red
);
}
}
@ -98,56 +99,55 @@ class FiltersFab extends StatelessWidget {
processModal.close();
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("${AppLocalizations.of(context)!.listAdded} $items."),
backgroundColor: Colors.green,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: "${AppLocalizations.of(context)!.listAdded} $items.",
color: Colors.green
);
}
else {
processModal.close();
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.listNotAdded),
backgroundColor: Colors.red,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.listNotAdded,
color: Colors.red
);
}
}
else if (result1['result'] == 'error' && result1['log'].statusCode == '400' && result1['log'].resBody.toString().contains("Couldn't fetch filter from url")) {
processModal.close();
appConfigProvider.addLog(result1['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.listUrlInvalid),
backgroundColor: Colors.red,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.listUrlInvalid,
color: Colors.red
);
}
else if (result1['result'] == 'error' && result1['log'].statusCode == '400' && result1['log'].resBody.toString().contains('Filter URL already added')) {
processModal.close();
appConfigProvider.addLog(result1['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.listAlreadyAdded),
backgroundColor: Colors.red,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.listAlreadyAdded,
color: Colors.red
);
}
else {
processModal.close();
appConfigProvider.addLog(result1['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.listNotAdded),
backgroundColor: Colors.red,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.listNotAdded,
color: Colors.red
);
}
}

View file

@ -14,6 +14,7 @@ import 'package:adguard_home_manager/screens/filters/add_list_modal.dart';
import 'package:adguard_home_manager/screens/filters/delete_list_modal.dart';
import 'package:adguard_home_manager/services/http_requests.dart';
import 'package:adguard_home_manager/functions/snackbar.dart';
import 'package:adguard_home_manager/classes/process_modal.dart';
import 'package:adguard_home_manager/providers/servers_provider.dart';
import 'package:adguard_home_manager/providers/app_config_provider.dart';
@ -97,24 +98,21 @@ class _FiltersListState extends State<FiltersList> {
serversProvider.setFilteringLoadStatus(2, true);
}
processModal.close();
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.listDataUpdated),
backgroundColor: Colors.green,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.listDataUpdated,
color: Colors.green
);
}
else {
appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.listDataNotUpdated),
backgroundColor: Colors.red,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.listDataNotUpdated,
color: Colors.red
);
}
}
@ -147,23 +145,22 @@ class _FiltersListState extends State<FiltersList> {
processModal.close();
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.listDataUpdated),
backgroundColor: Colors.green,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.listDataUpdated,
color: Colors.green
);
}
else {
processModal.close();
appConfigProvider.addLog(result1['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.listDataNotUpdated),
backgroundColor: Colors.red,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.listDataNotUpdated,
color: Colors.red
);
}
}
@ -191,23 +188,22 @@ class _FiltersListState extends State<FiltersList> {
processModal.close();
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.listDeleted),
backgroundColor: Colors.green,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.listDeleted,
color: Colors.green
);
}
else {
processModal.close();
appConfigProvider.addLog(result1['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.listNotDeleted),
backgroundColor: Colors.red,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.listNotDeleted,
color: Colors.red
);
}
}

View file

@ -72,6 +72,7 @@ class ListDetailsModal extends StatelessWidget {
children: [
ElevatedButton.icon(
onPressed: () {
Navigator.pop(context);
onEnableDisable(list, !list.enabled);
},
label: Text(

View file

@ -8,6 +8,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:adguard_home_manager/screens/settings/add_client_modal.dart';
import 'package:adguard_home_manager/screens/clients/remove_client_modal.dart';
import 'package:adguard_home_manager/functions/snackbar.dart';
import 'package:adguard_home_manager/providers/app_config_provider.dart';
import 'package:adguard_home_manager/models/clients_allowed_blocked.dart';
import 'package:adguard_home_manager/providers/servers_provider.dart';
@ -99,22 +100,21 @@ class _ClientsListState extends State<ClientsList> {
);
}
else if (result['result'] == 'error' && result['message'] == 'client_another_list') {
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.clientAnotherList),
backgroundColor: Colors.red,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.clientAnotherList,
color: Colors.red
);
}
else {
appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.clientNotRemoved),
backgroundColor: Colors.red,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.clientNotRemoved,
color: Colors.red
);
}
}
@ -153,26 +153,23 @@ class _ClientsListState extends State<ClientsList> {
);
}
else if (result['result'] == 'error' && result['message'] == 'client_another_list') {
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(AppLocalizations.of(context)!.clientAnotherList),
backgroundColor: Colors.red,
)
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: AppLocalizations.of(context)!.clientAnotherList,
color: Colors.red
);
}
else {
appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
type == 'allowed' || type == 'blocked'
showSnacbkar(
context: context,
appConfigProvider: appConfigProvider,
label: type == 'allowed' || type == 'blocked'
? AppLocalizations.of(context)!.clientNotRemoved
: AppLocalizations.of(context)!.domainNotAdded
),
backgroundColor: Colors.red,
)
: AppLocalizations.of(context)!.domainNotAdded,
color: Colors.red
);
}
}

View file

@ -17,7 +17,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 0.6.0+11
version: 0.6.1+12
environment:
sdk: '>=2.18.1 <3.0.0'