未处理的异常:“int”类型不是 DropdownButton 上“String”类型的子类型

时间:2021-06-26 12:26:29

标签: flutter dart dropdown

我正在从 API 创建 DropdownButton。下拉列表已经按照我的需要显示了,但是问题是我选择的列表没有显示出来,点击列表时出现错误:

Unhandled Exception: type 'int' is not a subtype of type 'String'

这是我的变量声明:

String _provinceSelected;

这是我的 DropdownButton 小部件:

DropdownButton(
  hint: Text('your province'),
  itemHeight: 60,
  isExpanded: true,
  items: dataProvince.map((item) {
    return DropdownMenuItem(
      child: Text(item['name']),
      value: item['id'],
    );
  }).toList(),
  onChanged: (value) {
    setState(() {
      _provinceSelected = value;
    });
  },
  value: _provinceSelected,
),

我的代码有什么问题吗?请帮忙?

2 个答案:

答案 0 :(得分:1)

<块引用>

我的代码有问题吗?

类型不匹配。

类型变量 _provinceSelected 被定义为 String 类型,但是当赋值时,它被赋值为 int 类型,因为 item['id'] 是一个int

更新 DropdownButton 以设置类似 TypeDropdownButton<String> 值并将值定义更新为 String


DropdownButton<String>(
  hint: Text('your province'),
  itemHeight: 60,
  isExpanded: true,
  items: dataProvince.map((item) {
    return DropdownMenuItem(
      child: Text(item['name']),
      value: item['id'].toString(),
    );
  }).toList(),
  onChanged: (value) {
    setState(() {
      _provinceSelected = value;
    });
  },
  value: _provinceSelected,
),

答案 1 :(得分:0)

我认为您对 id (int)_provinceSelected (String) 的数据类型有问题。因为 DropdownMenuItem 中 id 的值会在 onChanged 函数中返回值。因此您可以更改 id to String_provinceSelected to int 的数据类型。希望可以帮到你。