CupertinoDatePicker initialDateTime accounts for minuteInterval (#30862)

initialDateTime should account for minuteInterval
This commit is contained in:
LongCatIsLooong 2019-04-10 20:14:35 -07:00 committed by GitHub
parent b8a1870d92
commit 1a3201bc74
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 1 deletions

View File

@ -540,7 +540,7 @@ class _CupertinoDatePickerDateTimeState extends State<CupertinoDatePicker> {
Widget _buildMinutePicker(double offAxisFraction, TransitionBuilder itemPositioningBuilder) {
return CupertinoPicker(
scrollController: FixedExtentScrollController(initialItem: selectedMinute),
scrollController: FixedExtentScrollController(initialItem: selectedMinute ~/ widget.minuteInterval),
offAxisFraction: offAxisFraction,
itemExtent: _kItemExtent,
useMagnifier: _kUseMagnifier,

View File

@ -266,6 +266,31 @@ void main() {
expect(picker.initialDateTime, isNotNull);
});
testWidgets('initial date honors minuteInterval', (WidgetTester tester) async {
DateTime newDateTime;
await tester.pumpWidget(
CupertinoApp(
home: SizedBox(
width: 400,
height: 400,
child: CupertinoDatePicker(
onDateTimeChanged: (DateTime d) => newDateTime = d,
initialDateTime: DateTime(2018, 10, 10, 10, 3),
minuteInterval: 3,
)
)
)
);
// Drag the minute picker to the next slot (03 -> 06).
// The `initialDateTime` and the `minuteInterval` values are specifically choosen
// so that `find.text` finds exactly one widget.
await tester.drag(find.text('03'), _kRowOffset);
await tester.pump();
expect(newDateTime.minute, 6);
});
testWidgets('changing initialDateTime after first build does not do anything', (WidgetTester tester) async {
DateTime selectedDateTime;
await tester.pumpWidget(