无法在Flutter中实现DropdownButton

时间:2019-10-30 08:22:17

标签: android flutter

我正在尝试实现一个简单的 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.

如何克服此错误?预先感谢

1 个答案:

答案 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;
            });
          },

希望它能解决!