为什么我的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",
),
),
),
答案 0 :(得分:0)
status
只是函数的参数。您将widget.list[widget.index]['status']
作为参数传递,并且仅在整个函数中更改了该参数的值。因此,当setState
被调用时。它使用不变的Container
重建widget.list[widget.index]['status']
。在您的onSaved
和onChanged
中,更新widget.list[widget.index]['status']
而不是参数status
。这样,当它重建时,您将把更新后的值存储在widget.list[widget.index]['status']
中,这就是您将要传递的值