addDropDownButton<T> method
void
addDropDownButton<T>({
- String? key,
- List<
T> ? values, - T? defaultValue,
- DropMenuItemWidgetBuilder? builder,
- String? labelText,
参数
- key 返回值DialogResult.data的自定义键值,默认返回的是FormField所在列表中的下标(如:'field1')。
- values DropList的值,即被选择的值。String和int较为适用。
- builder 自定义构建,如MenuItem不满足需求时。
Implementation
void addDropDownButton<T>(
{String? key,
List<T>? values,
T? defaultValue,
DropMenuItemWidgetBuilder? builder,
String? labelText}) {
if (values == null || values.isEmpty) return;
T? _currentValue = defaultValue;
_children.add(
StatefulBuilder(builder: (context, StateSetter setState) {
return Padding(
padding: kVerticalPaddingTen,
child: DropdownButtonFormField<T>(
value: _currentValue,
decoration: InputDecoration(
labelText: labelText,
border: _outlineInputBorder,
),
hint: Padding(
padding: kHorizontalPaddingTen,
child: const Text("请选择"),
),
items: values
.map(
(e) => DropdownMenuItem<T>(
value: e,
child: builder == null
? Padding(
padding: kHorizontalPaddingTen,
child: Text(
"$e",
style: TextStyle(color: _textColor),
))
: builder.call(context, e),
onTap: () {},
),
)
.toList(),
borderRadius: BorderRadius.circular(10.0),
dropdownColor: _backgroundColor,
onChanged: (value) {
setState(() {
_currentValue = value!;
});
},
onSaved: (value) {
maps[key ?? "field${maps.length}"] = value;
},
validator: (value) {
if (value == null) {
return "Select it value.";
}
return null;
},
),
);
}),
);
}