// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/material.dart'; /// Flutter code sample for the [DropdownMenuEntry] `labelWidget` property. enum ColorItem { blue('Blue', Colors.blue), pink('Pink', Colors.pink), green('Green', Colors.green), yellow('Yellow', Colors.yellow), grey('Grey', Colors.grey); const ColorItem(this.label, this.color); final String label; final Color color; } class DropdownMenuEntryLabelWidgetExample extends StatefulWidget { const DropdownMenuEntryLabelWidgetExample({super.key}); @override State createState() => _DropdownMenuEntryLabelWidgetExampleState(); } class _DropdownMenuEntryLabelWidgetExampleState extends State { late final TextEditingController controller; @override void initState() { super.initState(); controller = TextEditingController(); } @override void dispose() { controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { // Created by Google Bard from 'create a lyrical phrase of about 25 words that begins with "is a color"'. const String longText = 'is a color that sings of hope, A hue that shines like gold. It is the color of dreams, A shade that never grows old.'; return Scaffold( body: Center( child: DropdownMenu( width: 300, controller: controller, initialSelection: ColorItem.green, label: const Text('Color'), onSelected: (ColorItem? color) { print('Selected $color'); }, dropdownMenuEntries: ColorItem.values .map>((ColorItem item) { final String labelText = '${item.label} $longText\n'; return DropdownMenuEntry( value: item, label: labelText, // Try commenting the labelWidget out or changing // the labelWidget's Text parameters. labelWidget: Text( labelText, maxLines: 1, overflow: TextOverflow.ellipsis, ), ); }) .toList(), ), ), ); } } class DropdownMenuEntryLabelWidgetExampleApp extends StatelessWidget { const DropdownMenuEntryLabelWidgetExampleApp({super.key}); @override Widget build(BuildContext context) { return const MaterialApp(home: DropdownMenuEntryLabelWidgetExample()); } } void main() { runApp(const DropdownMenuEntryLabelWidgetExampleApp()); }