CupertinoDatePicker initialDateTime accounts for minuteInterval (#30862)
initialDateTime should account for minuteInterval
This commit is contained in:
parent
b8a1870d92
commit
1a3201bc74
@ -540,7 +540,7 @@ class _CupertinoDatePickerDateTimeState extends State<CupertinoDatePicker> {
|
|||||||
|
|
||||||
Widget _buildMinutePicker(double offAxisFraction, TransitionBuilder itemPositioningBuilder) {
|
Widget _buildMinutePicker(double offAxisFraction, TransitionBuilder itemPositioningBuilder) {
|
||||||
return CupertinoPicker(
|
return CupertinoPicker(
|
||||||
scrollController: FixedExtentScrollController(initialItem: selectedMinute),
|
scrollController: FixedExtentScrollController(initialItem: selectedMinute ~/ widget.minuteInterval),
|
||||||
offAxisFraction: offAxisFraction,
|
offAxisFraction: offAxisFraction,
|
||||||
itemExtent: _kItemExtent,
|
itemExtent: _kItemExtent,
|
||||||
useMagnifier: _kUseMagnifier,
|
useMagnifier: _kUseMagnifier,
|
||||||
|
@ -266,6 +266,31 @@ void main() {
|
|||||||
expect(picker.initialDateTime, isNotNull);
|
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 {
|
testWidgets('changing initialDateTime after first build does not do anything', (WidgetTester tester) async {
|
||||||
DateTime selectedDateTime;
|
DateTime selectedDateTime;
|
||||||
await tester.pumpWidget(
|
await tester.pumpWidget(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user