fix(cupertinoDatePicker): do not display previous day when minimumDate is midnight (#72933)
diff --git a/packages/flutter/lib/src/cupertino/date_picker.dart b/packages/flutter/lib/src/cupertino/date_picker.dart
index 314e2a4..47c458f 100644
--- a/packages/flutter/lib/src/cupertino/date_picker.dart
+++ b/packages/flutter/lib/src/cupertino/date_picker.dart
@@ -705,7 +705,7 @@
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 5eafa3c..5c61cb2 100644
--- a/packages/flutter/test/cupertino/date_picker_test.dart
+++ b/packages/flutter/test/cupertino/date_picker_test.dart
@@ -933,6 +933,29 @@
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 {