blob: a4c77c624450311de561cdfa7738e173e5f5c7e4 [file] [log] [blame]
// 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<DropdownMenuEntryLabelWidgetExample> createState() => _DropdownMenuEntryLabelWidgetExampleState();
}
class _DropdownMenuEntryLabelWidgetExampleState extends State<DropdownMenuEntryLabelWidgetExample> {
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<ColorItem>(
width: 300,
controller: controller,
initialSelection: ColorItem.green,
label: const Text('Color'),
onSelected: (ColorItem? color) {
print('Selected $color');
},
dropdownMenuEntries: ColorItem.values.map<DropdownMenuEntry<ColorItem>>((ColorItem item) {
final String labelText = '${item.label} $longText\n';
return DropdownMenuEntry<ColorItem>(
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());
}