Flutter DropdownButtonFormField不更新变量

时间:2020-05-03 14:20:52

标签: flutter dart

因此,我在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;
    });
  }

1 个答案:

答案 0 :(得分:0)

您已将控制器直接分配给value的{​​{1}}参数,并且具有DropdownButtonFormField的字符串值。您应该存储相同的数据类型值。检查以下示例并相应地修改代码

DropdownMenuItem