diff --git a/packages/flutter_availability/lib/src/config/availability_options.dart b/packages/flutter_availability/lib/src/config/availability_options.dart index 90000c6..1d27d68 100644 --- a/packages/flutter_availability/lib/src/config/availability_options.dart +++ b/packages/flutter_availability/lib/src/config/availability_options.dart @@ -198,7 +198,7 @@ typedef TimePickerBuilder = Future Function( /// /// The function should return a [Future] that resolves to `true` if the user /// confirms. -typedef ConfirmationDialogBuilder = Future Function( +typedef ConfirmationDialogBuilder = Future Function( BuildContext context, { required String title, required String description, 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 fde9a35..df893da 100644 --- a/packages/flutter_availability/lib/src/ui/screens/availability_modification.dart +++ b/packages/flutter_availability/lib/src/ui/screens/availability_modification.dart @@ -99,14 +99,13 @@ class _AvailabilitiesModificationScreenState Future onClickSave() async { // TODO(Joey): The name confirmationDialogBuilder does not represent the // expected implementation. - var confirmed = await options.confirmationDialogBuilder( + var isConfirmed = await options.confirmationDialogBuilder( context, title: translations.availabilityDialogConfirmTitle, description: translations.availabilityDialogConfirmDescription, ); - // TODO(Joey): We should make the interface of the dialog function return - // a non nullable bool. Now we are implicitly setting default behaviour - if (confirmed ?? false) { + + if (isConfirmed) { await onSave(); } } diff --git a/packages/flutter_availability/lib/src/ui/screens/availability_overview.dart b/packages/flutter_availability/lib/src/ui/screens/availability_overview.dart index 1e1102d..f714a08 100644 --- a/packages/flutter_availability/lib/src/ui/screens/availability_overview.dart +++ b/packages/flutter_availability/lib/src/ui/screens/availability_overview.dart @@ -111,12 +111,12 @@ class _AvailabilityOverviewState extends State { } Future onClearButtonClicked() async { - var confirmed = await options.confirmationDialogBuilder( + var isConfirmed = await options.confirmationDialogBuilder( context, title: translations.clearAvailabilityConfirmTitle, description: translations.clearAvailabilityConfirmDescription, ); - if (confirmed ?? false) { + if (isConfirmed) { await service .clearAvailabilities(selectedAvailabilities.getAvailabilities()); setState(() { 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 b4868e8..93ba654 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 @@ -13,19 +13,26 @@ class DefaultConfirmationDialog extends StatelessWidget { }); /// Shows a confirmation dialog with a title and a description - static Future builder( + static Future builder( BuildContext context, { required String title, required String description, - }) => - showModalBottomSheet( - context: context, - shape: const RoundedRectangleBorder(), - builder: (context) => DefaultConfirmationDialog( - title: title, - description: description, - ), - ); + }) async { + var isConfirmed = await showModalBottomSheet( + context: context, + shape: const RoundedRectangleBorder(), + builder: (context) => DefaultConfirmationDialog( + title: title, + description: description, + ), + ); + + if (isConfirmed == null) { + return false; + } + + return isConfirmed; + } /// The title shown in the dialog final String title;