From 84ddffb36b0fe5b8aa47d39b20448fb3258b3db8 Mon Sep 17 00:00:00 2001 From: David LJ Date: Thu, 7 Jan 2021 19:34:03 +0100 Subject: [PATCH] fix(cupertinoDatePicker): do not display previous day when minimumDate is midnight (#72933) --- .../lib/src/cupertino/date_picker.dart | 2 +- .../test/cupertino/date_picker_test.dart | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/flutter/lib/src/cupertino/date_picker.dart b/packages/flutter/lib/src/cupertino/date_picker.dart index 314e2a4e60c..47c458f972c 100644 --- a/packages/flutter/lib/src/cupertino/date_picker.dart +++ b/packages/flutter/lib/src/cupertino/date_picker.dart @@ -705,7 +705,7 @@ class _CupertinoDatePickerDateTimeState extends State { final DateTime now = DateTime.now(); - if (widget.minimumDate?.isAfter(rangeEnd) == true) + if (widget.minimumDate?.isBefore(rangeEnd) == false) return null; if (widget.maximumDate?.isAfter(rangeStart) == false) return null; diff --git a/packages/flutter/test/cupertino/date_picker_test.dart b/packages/flutter/test/cupertino/date_picker_test.dart index 5eafa3cd86d..5c61cb2b0f1 100644 --- a/packages/flutter/test/cupertino/date_picker_test.dart +++ b/packages/flutter/test/cupertino/date_picker_test.dart @@ -933,6 +933,29 @@ void main() { expect(date.day, minDate.day); }); + testWidgets('date picker does not display previous day of minimumDate if it is set at midnight', (WidgetTester tester) async { + // Regression test for https://github.com/flutter/flutter/issues/72932 + final DateTime minDate = DateTime(2019, 12, 31); + await tester.pumpWidget( + CupertinoApp( + home: Center( + child: SizedBox( + height: 400.0, + width: 400.0, + child: CupertinoDatePicker( + mode: CupertinoDatePickerMode.dateAndTime, + minimumDate: minDate, + onDateTimeChanged: (DateTime newDate) { }, + initialDateTime: minDate.add(const Duration(days: 1)), + ), + ), + ), + ), + ); + + expect(find.text('Mon Dec 30'), findsNothing); + }); + group('Picker handles initial noon/midnight times', () { testWidgets('midnight', (WidgetTester tester) async {