我正在尝试实现一个简单的 DropdownButton ,用户可以使用它选择一种货币。
Container(
height: 150.0,
alignment: Alignment.center,
padding: EdgeInsets.only(bottom: 30.0),
color: Colors.lightBlue,
child: DropdownButton<String>(
items: [
DropdownMenuItem(child: Text('USD')),
DropdownMenuItem(child: Text('EUR')),
DropdownMenuItem(child: Text('GBP')),
],
value: 'USD',
onChanged: (value) {
print(value);
},
),
),
但是我遇到了错误
Failed assertion: line 620 pos 15: 'items == null || items.isEmpty || value == null || items.where((DropdownMenuItem<T> item) => item.value == value).length == 1': is not true.
如何克服此错误?预先感谢
答案 0 :(得分:2)
根据文档 here
您的 DropdownButton 项需要一个具有子级和值
的DropdownMenuItem因此将DropdownMenuItem用作
items: [
DropdownMenuItem(child: Text('USD'), value: 'USD'),
DropdownMenuItem(child: Text('EUR'), value: 'EUR'),
DropdownMenuItem(child: Text('GBP'), value: 'GBP'),
],
对于动态下拉菜单,请使用它。
var dropdownvalue = 'USD';
items: <String>['USD', 'EUR', 'GPB']
.map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
value: dropdownvalue,
onChanged: (value) {
setState(() {
dropdownvalue = value;
});
},
希望它能解决!