import 'package:flutter/material.dart'; import 'package:outbag_app/backend/room.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; class CategoryPicker extends StatelessWidget { List categories = []; int? selected; bool enabled = true; Function(int?)? onSelect; // hint and label may differ depending on the screen String? hint; String? label; CategoryPicker( {required this.categories, this.selected, this.onSelect, this.hint, this.label, this.enabled = true}); @override Widget build(BuildContext context) { return Padding( padding: const EdgeInsets.all(8), child: DropdownMenu( initialSelection: selected, enabled: enabled, hintText: hint, label: (label!=null)?Text(label!):null, onSelected: ((id) { if (onSelect != null) { onSelect!(id); } }), dropdownMenuEntries: [ // entry for every categry ...categories.map((category) => DropdownMenuEntry( value: category.id, label: category.name, trailingIcon: Icon( Icons.square_rounded, color: category.color, ))), // entry for default ("other") category DropdownMenuEntry( value: null, label: AppLocalizations.of(context)!.categoryNameOther, trailingIcon: Icon( Icons.square_rounded, color: RoomCategory.other(context).color, )) ], )); } }