import 'package:car_customer_app/extensions/string_extensions.dart'; import 'package:car_customer_app/theme/colors.dart'; import 'package:car_customer_app/utils/utils.dart'; import 'package:flutter/material.dart'; class DropValue { int id; String value; String subValue; DropValue(this.id, this.value, this.subValue); bool operator ==(o) => o is DropValue && o.value == value && o.id == id; } class DropdownField extends StatefulWidget { String? hint; List? list; DropValue? dropdownValue; Function(DropValue) onSelect; DropdownField(this.onSelect, {Key? key, this.hint, this.list,this.dropdownValue}) : super(key: key); @override State createState() => _DropdownFieldState(); } class _DropdownFieldState extends State { DropValue? dropdownValue; List defaultV = [ DropValue(1, "One", ""), DropValue(2, "Two", ""), ]; @override void initState() { super.initState(); dropdownValue = widget.dropdownValue; } @override Widget build(BuildContext context) { return Container( decoration: Utils.containerColorRadiusBorderWidth( MyColors.white, 0, MyColors.darkPrimaryColor, 2, ), margin: const EdgeInsets.all(0), padding: const EdgeInsets.only(left: 8, right: 8), child: DropdownButton( value: dropdownValue, icon: const Icon(Icons.keyboard_arrow_down_sharp), elevation: 16, iconSize: 16, iconEnabledColor: borderColor, iconDisabledColor: borderColor, isExpanded: true, style: const TextStyle(color: Colors.black, fontWeight: FontWeight.w600), hint: (widget.hint ?? "").toText(color: borderColor, fontSize: 12), underline: Container( height: 0, ), onChanged: (DropValue? newValue) { setState(() { dropdownValue = newValue!; widget.onSelect(newValue); }); }, items: (widget.list ?? defaultV).map>( (DropValue value) { return DropdownMenuItem( value: value, child: value.value.toText(fontSize: 12), ); }, ).toList(), ), ); } }