diff --git a/packages/flutter/lib/src/cupertino/picker.dart b/packages/flutter/lib/src/cupertino/picker.dart index b7124d515e9..3233842ac1a 100644 --- a/packages/flutter/lib/src/cupertino/picker.dart +++ b/packages/flutter/lib/src/cupertino/picker.dart @@ -198,7 +198,7 @@ class CupertinoPicker extends StatefulWidget { /// If unspecified, it defaults to a [CupertinoPickerDefaultSelectionOverlay] /// which is a gray rounded rectangle overlay in iOS 14 style. /// This property can be set to null to remove the overlay. - final Widget selectionOverlay; + final Widget? selectionOverlay; @override State createState() => _CupertinoPickerState(); @@ -301,7 +301,8 @@ class _CupertinoPickerState extends State { ), ), ), - _buildSelectionOverlay(widget.selectionOverlay), + if (widget.selectionOverlay != null) + _buildSelectionOverlay(widget.selectionOverlay!), ], ), ); diff --git a/packages/flutter/test/cupertino/picker_test.dart b/packages/flutter/test/cupertino/picker_test.dart index 62f422afcd0..009d11a4890 100644 --- a/packages/flutter/test/cupertino/picker_test.dart +++ b/packages/flutter/test/cupertino/picker_test.dart @@ -172,6 +172,29 @@ void main() { expect(find.byType(CupertinoPicker), paints..rrect(color: const Color(0x12345678))); }); + testWidgets('CupertinoPicker.selectionOverlay is nullable', (WidgetTester tester) async { + await tester.pumpWidget( + CupertinoApp( + theme: const CupertinoThemeData(brightness: Brightness.light), + home: Align( + alignment: Alignment.topLeft, + child: SizedBox( + height: 300.0, + width: 300.0, + child: CupertinoPicker( + itemExtent: 15.0, + children: const [Text('1'), Text('1')], + onSelectedItemChanged: (int i) {}, + selectionOverlay: null, + ), + ), + ), + ), + ); + + expect(find.byType(CupertinoPicker), isNot(paints..rrect())); + }); + group('scroll', () { testWidgets( 'scrolling calls onSelectedItemChanged and triggers haptic feedback',