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

View file

@ -126,11 +126,8 @@ class AppConfigProvider with ChangeNotifier {
notifyListeners(); notifyListeners();
} }
void setShowingSnackbar() async { void setShowingSnackbar(bool status) async {
_showingSnackbar = true; _showingSnackbar = status;
notifyListeners();
await Future.delayed(const Duration(milliseconds: 4500));
_showingSnackbar = false;
notifyListeners(); 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/options_modal.dart';
import 'package:adguard_home_manager/screens/clients/client_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/classes/process_modal.dart';
import 'package:adguard_home_manager/services/http_requests.dart'; import 'package:adguard_home_manager/services/http_requests.dart';
import 'package:adguard_home_manager/models/clients.dart'; import 'package:adguard_home_manager/models/clients.dart';
@ -87,22 +88,22 @@ class _AddedListState extends State<AddedList> {
} }
}).toList(); }).toList();
serversProvider.setClientsData(clientsData); serversProvider.setClientsData(clientsData);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.clientUpdatedSuccessfully), appConfigProvider: appConfigProvider,
backgroundColor: Colors.green, label: AppLocalizations.of(context)!.clientUpdatedSuccessfully,
) color: Colors.green
); );
} }
else { else {
appConfigProvider.addLog(result['log']); appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.clientNotUpdated), appConfigProvider: appConfigProvider,
backgroundColor: Colors.red, label: AppLocalizations.of(context)!.clientNotUpdated,
) color: Colors.red
); );
} }
} }
@ -119,22 +120,22 @@ class _AddedListState extends State<AddedList> {
ClientsData clientsData = serversProvider.clients.data!; ClientsData clientsData = serversProvider.clients.data!;
clientsData.clients = clientsData.clients.where((c) => c.name != client.name).toList(); clientsData.clients = clientsData.clients.where((c) => c.name != client.name).toList();
serversProvider.setClientsData(clientsData); serversProvider.setClientsData(clientsData);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.clientDeletedSuccessfully), appConfigProvider: appConfigProvider,
backgroundColor: Colors.green, label: AppLocalizations.of(context)!.clientDeletedSuccessfully,
) color: Colors.green
); );
} }
else { else {
appConfigProvider.addLog(result['log']); appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.clientNotDeleted), appConfigProvider: appConfigProvider,
backgroundColor: Colors.red, 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/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/models/clients.dart';
import 'package:adguard_home_manager/services/http_requests.dart'; import 'package:adguard_home_manager/services/http_requests.dart';
import 'package:adguard_home_manager/models/clients_allowed_blocked.dart'; import 'package:adguard_home_manager/models/clients_allowed_blocked.dart';
@ -52,31 +53,30 @@ class ClientsFab extends StatelessWidget {
blockedHosts: body['blocked_hosts'] ?? [], blockedHosts: body['blocked_hosts'] ?? [],
) )
); );
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.clientAddedSuccessfully), appConfigProvider: appConfigProvider,
backgroundColor: Colors.green, label: AppLocalizations.of(context)!.clientAddedSuccessfully,
) color: Colors.green
); );
} }
else if (result['result'] == 'error' && result['message'] == 'client_another_list') { else if (result['result'] == 'error' && result['message'] == 'client_another_list') {
appConfigProvider.setShowingSnackbar(); showSnacbkar(
ScaffoldMessenger.of(context).showSnackBar( context: context,
SnackBar( appConfigProvider: appConfigProvider,
content: Text(AppLocalizations.of(context)!.clientAnotherList), label: AppLocalizations.of(context)!.clientAnotherList,
backgroundColor: Colors.red, color: Colors.red
)
); );
} }
else { else {
appConfigProvider.addLog(result['log']); appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.clientNotAdded), appConfigProvider: appConfigProvider,
backgroundColor: Colors.red, label: AppLocalizations.of(context)!.clientNotAdded,
) color: Colors.red
); );
} }
} }
@ -93,22 +93,22 @@ class ClientsFab extends StatelessWidget {
ClientsData clientsData = serversProvider.clients.data!; ClientsData clientsData = serversProvider.clients.data!;
clientsData.clients.add(client); clientsData.clients.add(client);
serversProvider.setClientsData(clientsData); serversProvider.setClientsData(clientsData);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.clientAddedSuccessfully), appConfigProvider: appConfigProvider,
backgroundColor: Colors.green, label: AppLocalizations.of(context)!.clientAddedSuccessfully,
) color: Colors.green
); );
} }
else { else {
appConfigProvider.addLog(result['log']); appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.clientNotAdded), appConfigProvider: appConfigProvider,
backgroundColor: Colors.red, 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/fab.dart';
import 'package:adguard_home_manager/screens/filters/remove_custom_rule_modal.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/models/filtering.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/services/http_requests.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 filteringData = serversProvider.filtering.data!;
filteringData.userRules = newRules; filteringData.userRules = newRules;
serversProvider.setFilteringData(filteringData); serversProvider.setFilteringData(filteringData);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.ruleRemovedSuccessfully), appConfigProvider: appConfigProvider,
backgroundColor: Colors.green, label: AppLocalizations.of(context)!.ruleRemovedSuccessfully,
) color: Colors.green
); );
} }
else { else {
appConfigProvider.addLog(result['log']); appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.ruleNotRemoved), appConfigProvider: appConfigProvider,
backgroundColor: Colors.red, label: AppLocalizations.of(context)!.ruleNotRemoved,
) color: Colors.red
); );
} }
} }

View file

@ -1,12 +1,13 @@
// ignore_for_file: use_build_context_synchronously // 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:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.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_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/services/http_requests.dart';
import 'package:adguard_home_manager/classes/process_modal.dart'; import 'package:adguard_home_manager/classes/process_modal.dart';
import 'package:adguard_home_manager/providers/app_config_provider.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 filteringData = serversProvider.filtering.data!;
filteringData.userRules = newRules; filteringData.userRules = newRules;
serversProvider.setFilteringData(filteringData); serversProvider.setFilteringData(filteringData);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.ruleAddedSuccessfully), appConfigProvider: appConfigProvider,
backgroundColor: Colors.green, label: AppLocalizations.of(context)!.ruleAddedSuccessfully,
) color: Colors.green
); );
} }
else { else {
appConfigProvider.addLog(result['log']); appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.ruleNotAdded), appConfigProvider: appConfigProvider,
backgroundColor: Colors.red, label: AppLocalizations.of(context)!.ruleNotAdded,
) color: Colors.red
); );
} }
} }
@ -98,56 +99,55 @@ class FiltersFab extends StatelessWidget {
processModal.close(); processModal.close();
appConfigProvider.setShowingSnackbar(); showSnacbkar(
ScaffoldMessenger.of(context).showSnackBar( context: context,
SnackBar( appConfigProvider: appConfigProvider,
content: Text("${AppLocalizations.of(context)!.listAdded} $items."), label: "${AppLocalizations.of(context)!.listAdded} $items.",
backgroundColor: Colors.green, color: Colors.green
)
); );
} }
else { else {
processModal.close(); processModal.close();
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.listNotAdded), appConfigProvider: appConfigProvider,
backgroundColor: Colors.red, 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")) { else if (result1['result'] == 'error' && result1['log'].statusCode == '400' && result1['log'].resBody.toString().contains("Couldn't fetch filter from url")) {
processModal.close(); processModal.close();
appConfigProvider.addLog(result1['log']); appConfigProvider.addLog(result1['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.listUrlInvalid), appConfigProvider: appConfigProvider,
backgroundColor: Colors.red, 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')) { else if (result1['result'] == 'error' && result1['log'].statusCode == '400' && result1['log'].resBody.toString().contains('Filter URL already added')) {
processModal.close(); processModal.close();
appConfigProvider.addLog(result1['log']); appConfigProvider.addLog(result1['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.listAlreadyAdded), appConfigProvider: appConfigProvider,
backgroundColor: Colors.red, label: AppLocalizations.of(context)!.listAlreadyAdded,
) color: Colors.red
); );
} }
else { else {
processModal.close(); processModal.close();
appConfigProvider.addLog(result1['log']); appConfigProvider.addLog(result1['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.listNotAdded), appConfigProvider: appConfigProvider,
backgroundColor: Colors.red, 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/screens/filters/delete_list_modal.dart';
import 'package:adguard_home_manager/services/http_requests.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/classes/process_modal.dart';
import 'package:adguard_home_manager/providers/servers_provider.dart'; import 'package:adguard_home_manager/providers/servers_provider.dart';
import 'package:adguard_home_manager/providers/app_config_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); serversProvider.setFilteringLoadStatus(2, true);
} }
processModal.close(); showSnacbkar(
context: context,
appConfigProvider.setShowingSnackbar(); appConfigProvider: appConfigProvider,
ScaffoldMessenger.of(context).showSnackBar( label: AppLocalizations.of(context)!.listDataUpdated,
SnackBar( color: Colors.green
content: Text(AppLocalizations.of(context)!.listDataUpdated),
backgroundColor: Colors.green,
)
); );
} }
else { else {
appConfigProvider.addLog(result['log']); appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.listDataNotUpdated), appConfigProvider: appConfigProvider,
backgroundColor: Colors.red, label: AppLocalizations.of(context)!.listDataNotUpdated,
) color: Colors.red
); );
} }
} }
@ -147,23 +145,22 @@ class _FiltersListState extends State<FiltersList> {
processModal.close(); processModal.close();
appConfigProvider.setShowingSnackbar(); showSnacbkar(
ScaffoldMessenger.of(context).showSnackBar( context: context,
SnackBar( appConfigProvider: appConfigProvider,
content: Text(AppLocalizations.of(context)!.listDataUpdated), label: AppLocalizations.of(context)!.listDataUpdated,
backgroundColor: Colors.green, color: Colors.green
)
); );
} }
else { else {
processModal.close(); processModal.close();
appConfigProvider.addLog(result1['log']); appConfigProvider.addLog(result1['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.listDataNotUpdated), appConfigProvider: appConfigProvider,
backgroundColor: Colors.red, label: AppLocalizations.of(context)!.listDataNotUpdated,
) color: Colors.red
); );
} }
} }
@ -191,23 +188,22 @@ class _FiltersListState extends State<FiltersList> {
processModal.close(); processModal.close();
appConfigProvider.setShowingSnackbar(); showSnacbkar(
ScaffoldMessenger.of(context).showSnackBar( context: context,
SnackBar( appConfigProvider: appConfigProvider,
content: Text(AppLocalizations.of(context)!.listDeleted), label: AppLocalizations.of(context)!.listDeleted,
backgroundColor: Colors.green, color: Colors.green
)
); );
} }
else { else {
processModal.close(); processModal.close();
appConfigProvider.addLog(result1['log']); appConfigProvider.addLog(result1['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.listNotDeleted), appConfigProvider: appConfigProvider,
backgroundColor: Colors.red, label: AppLocalizations.of(context)!.listNotDeleted,
) color: Colors.red
); );
} }
} }

View file

@ -72,6 +72,7 @@ class ListDetailsModal extends StatelessWidget {
children: [ children: [
ElevatedButton.icon( ElevatedButton.icon(
onPressed: () { onPressed: () {
Navigator.pop(context);
onEnableDisable(list, !list.enabled); onEnableDisable(list, !list.enabled);
}, },
label: Text( 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/settings/add_client_modal.dart';
import 'package:adguard_home_manager/screens/clients/remove_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/providers/app_config_provider.dart';
import 'package:adguard_home_manager/models/clients_allowed_blocked.dart'; import 'package:adguard_home_manager/models/clients_allowed_blocked.dart';
import 'package:adguard_home_manager/providers/servers_provider.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') { else if (result['result'] == 'error' && result['message'] == 'client_another_list') {
appConfigProvider.setShowingSnackbar(); showSnacbkar(
ScaffoldMessenger.of(context).showSnackBar( context: context,
SnackBar( appConfigProvider: appConfigProvider,
content: Text(AppLocalizations.of(context)!.clientAnotherList), label: AppLocalizations.of(context)!.clientAnotherList,
backgroundColor: Colors.red, color: Colors.red
)
); );
} }
else { else {
appConfigProvider.addLog(result['log']); appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text(AppLocalizations.of(context)!.clientNotRemoved), appConfigProvider: appConfigProvider,
backgroundColor: Colors.red, 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') { else if (result['result'] == 'error' && result['message'] == 'client_another_list') {
appConfigProvider.setShowingSnackbar(); showSnacbkar(
ScaffoldMessenger.of(context).showSnackBar( context: context,
SnackBar( appConfigProvider: appConfigProvider,
content: Text(AppLocalizations.of(context)!.clientAnotherList), label: AppLocalizations.of(context)!.clientAnotherList,
backgroundColor: Colors.red, color: Colors.red
)
); );
} }
else { else {
appConfigProvider.addLog(result['log']); appConfigProvider.addLog(result['log']);
appConfigProvider.setShowingSnackbar();
ScaffoldMessenger.of(context).showSnackBar( showSnacbkar(
SnackBar( context: context,
content: Text( appConfigProvider: appConfigProvider,
type == 'allowed' || type == 'blocked' label: type == 'allowed' || type == 'blocked'
? AppLocalizations.of(context)!.clientNotRemoved ? AppLocalizations.of(context)!.clientNotRemoved
: AppLocalizations.of(context)!.domainNotAdded : AppLocalizations.of(context)!.domainNotAdded,
), color: Colors.red
backgroundColor: 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 # 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 # 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. # 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: environment:
sdk: '>=2.18.1 <3.0.0' sdk: '>=2.18.1 <3.0.0'