Flutter不显示下拉选择 [英] Dropdown selection not displaying with Flutter
问题描述
我要从JSON获取项目并将其显示在下拉列表中。当人员从下拉列表中选择一项时,我得到了选择,但所选项没有改变。
I' m gettings items from JSON and displaying them in a dropdown. When the person select an item from the dropdown list, I get the selection but the selected item doesn't change.
例如,列表中有(东京,巴黎,纽约) 。默认情况下,选择东京。当人们选择巴黎时,我明白了,但下拉菜单中的选择没有改变。
For example we have (tokyo, paris, new york) in the list. By default selection is tokyo. When the person select paris, I get it but the selection doesn't change in the dropdown.
这是我的代码:
new DropdownButton(
value: cities.elementAt(0),
hint: new Text("Ville"),
items: cities.map((String value) {
return new DropdownMenuItem(
value: value,
child: new Row(
children: <Widget>[
new Icon(
Icons.location_city,
color: Colors.deepOrange,
),
new Text(value)
],
),
);
}).toList(),
onChanged: (String value) {
getTravelCity(value);
},
),
当人员选择一个项目时,它仍显示默认值。
When the person select an item, it still showing the default value.
推荐答案
确保您没有在Widget中声明selectedValue,下面的示例对我来说很完美。
make sure you are not declaring the selectedValue inside the Widget the below example works for me perfectly.
这是 dartpad 上的工作代码进行测试
here is the working code on dartpad to test it out
var currentSelectedValue;
const deviceTypes = ["Mac", "Windows", "Mobile"];
Widget typeFieldWidget() {
return Container(
padding: EdgeInsets.symmetric(horizontal: 20),
child: FormField<String>(
builder: (FormFieldState<String> state) {
return InputDecorator(
decoration: InputDecoration(
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(5.0))),
child: DropdownButtonHideUnderline(
child: DropdownButton<String>(
hint: Text("Select Device"),
value: currentSelectedValue,
isDense: true,
onChanged: (newValue) {
setState(() {
currentSelectedValue = newValue;
});
print(currentSelectedValue);
},
items: deviceTypes.map((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
),
),
);
},
),
);
}
这篇关于Flutter不显示下拉选择的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!