diff --git a/packages/flutter_availability/lib/src/ui/view_models/break_view_model.dart b/packages/flutter_availability/lib/src/ui/view_models/break_view_model.dart index 23c921a..b6f3aab 100644 --- a/packages/flutter_availability/lib/src/ui/view_models/break_view_model.dart +++ b/packages/flutter_availability/lib/src/ui/view_models/break_view_model.dart @@ -33,6 +33,14 @@ class BreakViewModel { /// [endTime] final Duration? duration; + /// Get the duration in minutes + /// If the duration is null, return the difference between the start and end + /// time in minutes + int get durationInMinutes => + duration?.inMinutes ?? + ((endTime!.hour * 60 + endTime!.minute) - + (startTime!.hour * 60 + startTime!.minute)); + /// Returns true if the break is valid /// The start is before the end and the duration is equal or lower than the /// difference between the start and end diff --git a/packages/flutter_availability/lib/src/ui/widgets/pause_selection.dart b/packages/flutter_availability/lib/src/ui/widgets/pause_selection.dart index 29bc804..813ca0e 100644 --- a/packages/flutter_availability/lib/src/ui/widgets/pause_selection.dart +++ b/packages/flutter_availability/lib/src/ui/widgets/pause_selection.dart @@ -56,8 +56,9 @@ class PauseSelection extends StatelessWidget { Future onEditBreak(BreakViewModel availabilityBreak) async { var updatedBreak = await openBreakDialog(availabilityBreak); if (updatedBreak == null) return; - + // remove the old break and add the updated one var updatedBreaks = [...breaks, updatedBreak]; + updatedBreaks.remove(availabilityBreak); onBreaksChanged(updatedBreaks); } @@ -145,6 +146,8 @@ class BreakDisplay extends StatelessWidget { breakModel.endTime!, ); + var breakDuration = breakModel.durationInMinutes; + return InkWell( onTap: onClick, child: Container( @@ -157,7 +160,7 @@ class BreakDisplay extends StatelessWidget { child: Row( children: [ Text( - "${breakModel.duration!.inMinutes} " + "$breakDuration " "${translations.timeMinutes} | " "$starTime - " "$endTime", @@ -267,9 +270,10 @@ class _AvailabilityBreakSelectionDialogState ? () { if (_breakViewModel.isValid) { Navigator.of(context).pop(_breakViewModel); + } else { + debugPrint("Break is not valid"); + // TODO(freek): show error message } - debugPrint("Break is not valid"); - // TODO(freek): show error message } : null;