1

我想制作下拉列表按钮,但它的列表应该是枚举的元素,现在我试图更改类型,但它显示了一个错误,现在我知道我可以使用字符串,然后使用 if-else 来做,但显然会使代码那么有没有办法将字符串更改为枚举的数据类型。

4

1 回答 1

4

是的,您可以轻松做到这一点。只需指定要使用的数据类型,这里我们使用DropdownButton<CustomType>

enum CustomType { TYPE1, TYPE2, TYPE3 }

DropdownButton<CustomType>(
  onChanged: (value) => print(value),
  items: [
    DropdownMenuItem(
      child: Text("TYPE 1"),
      value: CustomType.TYPE1,
    ),
    DropdownMenuItem(
      child: Text("TYPE 2"),
      value: CustomType.TYPE2,
    ),
    DropdownMenuItem(
      child: Text("TYPE 3"),
      value: CustomType.TYPE3,
    ),
  ],
)

迭代枚举值

DropdownButton<CustomType>(
  onChanged: (value) => print(value),
  items: CustomType.values
      .map((type) => DropdownMenuItem(
            child: Text(type.toString().split('.')[1]),
            value: type,
          ))
      .toList(),
)

我希望这就是你要找的。

于 2020-05-29T15:42:18.557 回答