Flutter:为什么DropDownFormField不更改其值?

时间:2020-06-08 09:13:56

标签: flutter dart

为什么我的drodownformfield不更改其值?

该下拉菜单并未将其显示为所选内容,而是继续显示,好像什么都没有选择一样。请帮助我解决问题。

Widget dropdownstatus(String status) {
    return DropDownFormField(
      titleText: 'Status',
      hintText: 'Sila pilih',
      value: status,
      onSaved: (value) {
        setState(() {
          status = value;
        });
      },
      onChanged: (value) {
        setState(() {
          status = value;
        });
      },
      dataSource: [
        {
          "display": "Disemak",
          "value": "disemak",
        },
        {
          "display": "Selesai",
          "value": "selesai",
        },
        {
          "display": "Tidak Selesai",
          "value": "tidakselesai",
        },
      ],
      textField: 'display',
      valueField: 'value',
    );
  }

从这里

Container(
      child: widget.list[widget.index]['kategoripengguna'] !='juruteknik'
         ? dropdownstatus(widget.list[widget.index]['status'])
          : TextFormField(
            initialValue: widget.list[widget.index]
             ['status'],
              readOnly: true,
              decoration: InputDecoration(
              labelText: "Status",
               ),
               ),
     ),

1 个答案:

答案 0 :(得分:0)

status只是函数的参数。您将widget.list[widget.index]['status']作为参数传递,并且仅在整个函数中更改了该参数的值。因此,当setState被调用时。它使用不变的Container重建widget.list[widget.index]['status']。在您的onSavedonChanged中,更新widget.list[widget.index]['status']而不是参数status。这样,当它重建时,您将把更新后的值存储在widget.list[widget.index]['status']中,这就是您将要传递的值