-
Qun Cheng authored
Fixes #125199 This PR is to add a new property `expandedInsets` so that the `DropdownMenu` can be expandable and has some margins around. <details><summary>Example: Setting `expandedInsets` to `EdgeInsets.zero`</summary> ```dart import 'package:flutter/material.dart'; void main() => runApp(const DropdownMenuExample()); class DropdownMenuExample extends StatefulWidget { const DropdownMenuExample({super.key}); @override State<DropdownMenuExample> createState() => _DropdownMenuExampleState(); } class _DropdownMenuExampleState extends State<DropdownMenuExample> { final TextEditingController colorController = TextEditingController(); ColorLabel? selectedColor; @override Widget build(BuildContext context) { final List<DropdownMenuEntry<ColorLabel>> colorEntries = <DropdownMenuEntry<ColorLabel>>[]; for (final ColorLabel color in ColorLabel.values) { colorEntries.add( DropdownMenuEntry<ColorLabel>(value: color, label: color.label, enabled: color.label != 'Grey'), ); } return MaterialApp( theme: ThemeData( useMaterial3: true, colorSchemeSeed: Colors.green, ), home: Scaffold( body: Center( child: Container( width: 500, height: 500, color: Colors.orange, child: DropdownMenu<ColorLabel>( expandedInsets: EdgeInsets.zero, inputDecorationTheme: const InputDecorationTheme( filled: true, fillColor: Colors.white, border: OutlineInputBorder(), ), controller: colorController, dropdownMenuEntries: colorEntries, onSelected: (ColorLabel? color) { setState(() { selectedColor = color; }); }, // expandedInsets: EdgeInsets.only(left: 35.0, right: 20.0, top: 80), ), ), ), ), ); } } enum ColorLabel { blue('Blue', Colors.blue), pink('Pink', Colors.pink), green('Green', Colors.green), yellow('Yellow', Colors.yellow), grey('Grey', Colors.grey); const ColorLabel(this.label, this.color); final String label; final Color color; } ``` <img width="500" alt="Screenshot 2023-06-28 at 11 33 20 PM" src="https://github.com/flutter/flutter/assets/36861262/e703f8a2-6e7c-45a0-86cf-d96da6dc157a"> </details>