From 04691461d8e5fbf2980c4adf6ff851cd3cf24d3f Mon Sep 17 00:00:00 2001 From: Freek van de Ven Date: Thu, 11 Jul 2024 11:47:27 +0200 Subject: [PATCH] feat: add confirmation dialog for saving availabilities --- .../lib/src/config/availability_translations.dart | 13 +++++++++++++ .../src/ui/screens/availability_modification.dart | 13 ++++++++++++- .../src/ui/widgets/default_confirmation_dialog.dart | 1 + 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/packages/flutter_availability/lib/src/config/availability_translations.dart b/packages/flutter_availability/lib/src/config/availability_translations.dart index fcb3176..1f3a801 100644 --- a/packages/flutter_availability/lib/src/config/availability_translations.dart +++ b/packages/flutter_availability/lib/src/config/availability_translations.dart @@ -26,6 +26,8 @@ class AvailabilityTranslations { required this.availabilityAddTemplateTitle, required this.availabilityTimeTitle, required this.availabilitiesTimeTitle, + required this.availabilityDialogConfirmTitle, + required this.availabilityDialogConfirmDescription, required this.templateScreenTitle, required this.dayTemplates, required this.weekTemplates, @@ -75,6 +77,11 @@ class AvailabilityTranslations { this.availabilityAddTemplateTitle = "Add template to availability", this.availabilityTimeTitle = "Start and end time workday", this.availabilitiesTimeTitle = "Start and end time workdays", + this.availabilityDialogConfirmTitle = + "Are you sure you want to save the changes?", + this.availabilityDialogConfirmDescription = + "This will update your availabilities but you can always " + "change them later", this.overviewScreenTitle = "Availability", this.templateScreenTitle = "Templates", this.dayTemplates = "Day templates", @@ -155,6 +162,12 @@ class AvailabilityTranslations { /// The title on the time selection section for adding multiple availabilities final String availabilitiesTimeTitle; + /// The title on the dialog for confirming the availability update + final String availabilityDialogConfirmTitle; + + /// The description on the dialog for confirming the availability update + final String availabilityDialogConfirmDescription; + /// The title on the template screen final String templateScreenTitle; diff --git a/packages/flutter_availability/lib/src/ui/screens/availability_modification.dart b/packages/flutter_availability/lib/src/ui/screens/availability_modification.dart index e33339b..c1a9cbf 100644 --- a/packages/flutter_availability/lib/src/ui/screens/availability_modification.dart +++ b/packages/flutter_availability/lib/src/ui/screens/availability_modification.dart @@ -92,11 +92,22 @@ class _AvailabilitiesModificationScreenState widget.onExit(); } + Future onClickSave() async { + var confirmed = await options.confirmationDialogBuilder( + context, + title: translations.availabilityDialogConfirmTitle, + description: translations.availabilityDialogConfirmDescription, + ); + if (confirmed ?? false) { + await onSave(); + } + } + var canSave = _clearAvailability || (_startTime != null && _endTime != null); var saveButton = options.primaryButtonBuilder( context, - canSave ? onSave : null, + canSave ? onClickSave : null, Text(translations.saveButton), ); diff --git a/packages/flutter_availability/lib/src/ui/widgets/default_confirmation_dialog.dart b/packages/flutter_availability/lib/src/ui/widgets/default_confirmation_dialog.dart index 857c563..b4868e8 100644 --- a/packages/flutter_availability/lib/src/ui/widgets/default_confirmation_dialog.dart +++ b/packages/flutter_availability/lib/src/ui/widgets/default_confirmation_dialog.dart @@ -58,6 +58,7 @@ class DefaultConfirmationDialog extends StatelessWidget { Text( title, style: textTheme.titleMedium, + textAlign: TextAlign.center, ), const SizedBox(height: 16), Text(