Flutter中的DropdownButton小部件不接受引号

时间:2018-08-08 16:18:16

标签: drop-down-menu dart flutter

我有下面显示的这个小部件,只要这些项目是字母,它就可以工作,但是一旦我将它们切换为单引号的数字,它就会停止工作并出现此错误:

    I/flutter (31770): The following assertion was thrown 
    building ScopedModelDescendant<MainModel>(dirty):
    I/flutter (31770): 'package:flutter/src/material/dropdown.dart': Failed 
    assertion: line 481 pos 15: 'value == null ||
    I/flutter (31770): items.where((DropdownMenuItem<T> item) => item.value 
    == value).length == 1': is not true.

这是实际的小部件:

      Widget _buildServingDropdownButton(Product product) {
if (product != null) {
  topperValue = product.topper;
}
return Padding(
  padding: const EdgeInsets.all(0.0),
  child: Column(
    mainAxisAlignment: MainAxisAlignment.start,
    children: <Widget>[
      ListTile(
        title: const Text('Topper'),
        trailing: DropdownButton<String>(
            hint: Text('Choose'),
            onChanged: (String value) {
              setState(() {
                topperValue = value;

                print(topperValue);
              });
            },
            value: topperValue,
            items: <String>[
              '1',
            ].map((String value) {
              return DropdownMenuItem<String>(
                value: value,
                child: Text(value),
              );
            }).toList()),
      ),
    ],
  ),
);
}

1 个答案:

答案 0 :(得分:3)

当您的DropdownMenuItem中指定的值不可用时,会发生此错误。

您刚刚定义了一项:

items: <String>[
          '1',
        ]

但是,如果您的topperValue不同,则会收到该错误。

if (product != null) {
   topperValue = product.topper;  //different from '1' 
 }

value: topperValue,