DatePicker noon/midnight overflow fix (#27773)
This commit is contained in:
parent
b4adafac08
commit
f372eb37e6
@ -448,7 +448,7 @@ class _CupertinoDatePickerDateTimeState extends State<CupertinoDatePicker> {
|
|||||||
date.year,
|
date.year,
|
||||||
date.month,
|
date.month,
|
||||||
date.day,
|
date.day,
|
||||||
selectedHour + selectedAmPm * 12,
|
widget.use24hFormat ? selectedHour : selectedHour % 12 + selectedAmPm * 12,
|
||||||
selectedMinute,
|
selectedMinute,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -560,6 +560,87 @@ void main() {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
group('Picker handles initial noon/midnight times', () {
|
||||||
|
testWidgets('midnight', (WidgetTester tester) async {
|
||||||
|
DateTime date;
|
||||||
|
await tester.pumpWidget(
|
||||||
|
CupertinoApp(
|
||||||
|
home: SizedBox(
|
||||||
|
height: 400.0,
|
||||||
|
width: 400.0,
|
||||||
|
child: CupertinoDatePicker(
|
||||||
|
mode: CupertinoDatePickerMode.time,
|
||||||
|
onDateTimeChanged: (DateTime newDate) {
|
||||||
|
date = newDate;
|
||||||
|
},
|
||||||
|
initialDateTime: DateTime(2019, 1, 1, 0, 15),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
// 0:15 -> 0:16
|
||||||
|
await tester.drag(find.text('15'), _kRowOffset);
|
||||||
|
await tester.pump();
|
||||||
|
await tester.pump(const Duration(milliseconds: 500));
|
||||||
|
|
||||||
|
expect(date, DateTime(2019, 1, 1, 0, 16));
|
||||||
|
});
|
||||||
|
|
||||||
|
testWidgets('noon', (WidgetTester tester) async {
|
||||||
|
DateTime date;
|
||||||
|
await tester.pumpWidget(
|
||||||
|
CupertinoApp(
|
||||||
|
home: SizedBox(
|
||||||
|
height: 400.0,
|
||||||
|
width: 400.0,
|
||||||
|
child: CupertinoDatePicker(
|
||||||
|
mode: CupertinoDatePickerMode.time,
|
||||||
|
onDateTimeChanged: (DateTime newDate) {
|
||||||
|
date = newDate;
|
||||||
|
},
|
||||||
|
initialDateTime: DateTime(2019, 1, 1, 12, 15),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
// 12:15 -> 12:16
|
||||||
|
await tester.drag(find.text('15'), _kRowOffset);
|
||||||
|
await tester.pump();
|
||||||
|
await tester.pump(const Duration(milliseconds: 500));
|
||||||
|
|
||||||
|
expect(date, DateTime(2019, 1, 1, 12, 16));
|
||||||
|
});
|
||||||
|
|
||||||
|
testWidgets('noon in 24 hour time', (WidgetTester tester) async {
|
||||||
|
DateTime date;
|
||||||
|
await tester.pumpWidget(
|
||||||
|
CupertinoApp(
|
||||||
|
home: SizedBox(
|
||||||
|
height: 400.0,
|
||||||
|
width: 400.0,
|
||||||
|
child: CupertinoDatePicker(
|
||||||
|
use24hFormat: true,
|
||||||
|
mode: CupertinoDatePickerMode.time,
|
||||||
|
onDateTimeChanged: (DateTime newDate) {
|
||||||
|
date = newDate;
|
||||||
|
},
|
||||||
|
initialDateTime: DateTime(2019, 1, 1, 12, 25),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
// 12:25 -> 12:26
|
||||||
|
await tester.drag(find.text('25'), _kRowOffset);
|
||||||
|
await tester.pump();
|
||||||
|
await tester.pump(const Duration(milliseconds: 500));
|
||||||
|
|
||||||
|
expect(date, DateTime(2019, 1, 1, 12, 26));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
testWidgets('picker persists am/pm value when scrolling hours', (WidgetTester tester) async {
|
testWidgets('picker persists am/pm value when scrolling hours', (WidgetTester tester) async {
|
||||||
DateTime date;
|
DateTime date;
|
||||||
await tester.pumpWidget(
|
await tester.pumpWidget(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user