因此,我在DropdownButtonFormField中苦苦挣扎,在其中更改值时,它将使用更新后的值运行onChange函数,但是一旦onChange完成,值变量似乎会重置自身,这意味着它永远不会更改。
这是完整表格的简化版本:
final _formKey = GlobalKey<FormState>();
TextEditingController assetGroupNameController = new TextEditingController();
TextEditingController assetGroupDescriptionController = new TextEditingController();
String assetGroupTypeController;
Widget build(BuildContext context) {
ProgressDialog pr;
assetGroupNameController.text = widget.assetGroup.name;
assetGroupDescriptionController.text = widget.assetGroup.description;
assetGroupTypeController = widget.assetGroup.type;
return ListView(
children: <Widget>[
Card(
elevation: 13.0,
child: Form(
key: _formKey,
child: DropdownButtonFormField(
value: assetGroupTypeController,
items: assetGroupTypes.map((f) {
return new DropdownMenuItem<String>(
value: f['key'],
child: new Text(f['text']),
);
}).toList(),
onChanged: (value) {
typeDropdownChange(value);
})
)
)
);
}
void typeDropdownChange(value) {
setState(() {
assetGroupTypeController = value;
});
}
答案 0 :(得分:0)
您已将控制器直接分配给value
的{{1}}参数,并且具有DropdownButtonFormField
的字符串值。您应该存储相同的数据类型值。检查以下示例并相应地修改代码
DropdownMenuItem