diff --git a/examples/flutter_gallery/flutter.yaml b/examples/flutter_gallery/flutter.yaml index f9300f384db..4a59a31f8b8 100644 --- a/examples/flutter_gallery/flutter.yaml +++ b/examples/flutter_gallery/flutter.yaml @@ -25,7 +25,6 @@ assets: - packages/flutter_gallery_assets/pesto/image9.jpg - packages/flutter_gallery_assets/pesto/logo_small.png - packages/flutter_gallery_assets/pesto/logo_medium.png - - packages/flutter_gallery_assets/pesto/logo_big.png - packages/flutter_gallery_assets/pesto/fish.png - packages/flutter_gallery_assets/pesto/healthy.png - packages/flutter_gallery_assets/pesto/main.png diff --git a/examples/flutter_gallery/lib/demo/pesto_demo.dart b/examples/flutter_gallery/lib/demo/pesto_demo.dart index 2704eac92e7..6d97253fae7 100644 --- a/examples/flutter_gallery/lib/demo/pesto_demo.dart +++ b/examples/flutter_gallery/lib/demo/pesto_demo.dart @@ -12,8 +12,7 @@ const String _kUserImage = 'packages/flutter_gallery_assets/pesto/avatar.jpg'; // Map of logo images keyed by the minimum height their container needs to be. final Map _kLogoImages = { 0.0: 'packages/flutter_gallery_assets/pesto/logo_small.png', - 70.0: 'packages/flutter_gallery_assets/pesto/logo_medium.png', - 170.0: 'packages/flutter_gallery_assets/pesto/logo_big.png', + 70.0: 'packages/flutter_gallery_assets/pesto/logo_medium.png' }; final ThemeData _kTheme = new ThemeData( diff --git a/packages/flutter/lib/src/material/drop_down.dart b/packages/flutter/lib/src/material/drop_down.dart index 95ed90f5591..68269609932 100644 --- a/packages/flutter/lib/src/material/drop_down.dart +++ b/packages/flutter/lib/src/material/drop_down.dart @@ -75,6 +75,16 @@ class _DropDownMenuPainter extends CustomPainter { } } +// Do not use the platform-specific default scroll configuration. +// Dropdown menus should never overscroll or display an overscroll indicator. +class _DropDownScrollConfigurationDelegate extends ScrollConfigurationDelegate { + const _DropDownScrollConfigurationDelegate(); + + @override + Widget wrapScrollWidget(Widget scrollWidget) => new ClampOverscrolls(value: true, child: scrollWidget); +} +final ScrollConfigurationDelegate _dropDownScroll = const _DropDownScrollConfigurationDelegate(); + class _DropDownMenu extends StatefulWidget { _DropDownMenu({ Key key, @@ -159,12 +169,15 @@ class _DropDownMenuState extends State<_DropDownMenu> { child: new Material( type: MaterialType.transparency, textStyle: route.style, - child: new Scrollbar( - child: new ScrollableList( - scrollableKey: config.route.scrollableKey, - padding: _kMenuVerticalPadding, - itemExtent: _kMenuItemHeight, - children: children + child: new ScrollConfiguration( + delegate: _dropDownScroll, + child: new Scrollbar( + child: new ScrollableList( + scrollableKey: config.route.scrollableKey, + padding: _kMenuVerticalPadding, + itemExtent: _kMenuItemHeight, + children: children + ) ) ) )