Flutter 如何在颤振中使用自定义数据类型dropdownlist按钮?

Flutter 如何在颤振中使用自定义数据类型dropdownlist按钮?,flutter,enums,dropdownbutton,Flutter,Enums,Dropdownbutton,我想让drop downlistbutton但是它的列表应该是enum的元素现在我试图更改类型,但它显示了一个错误现在我知道我可以使用字符串,以后如果使用其他方法,我可以使用,但显然会使代码变长,所以有没有办法将字符串更改为枚举。是的,您可以很容易地做到这一点。只需指定要使用的数据类型,这里我们使用DropdownButton enum CustomType{TYPE1,TYPE2,TYPE3} 下拉按钮( 一旦更改:(值)=>打印(值), 项目:[ 下拉菜单项( 子项:文本(“类型1”), 值

我想让drop downlistbutton但是它的列表应该是enum的元素现在我试图更改类型,但它显示了一个错误现在我知道我可以使用字符串,以后如果使用其他方法,我可以使用,但显然会使代码变长,所以有没有办法将字符串更改为枚举。

是的,您可以很容易地做到这一点。只需指定要使用的数据类型,这里我们使用
DropdownButton

enum CustomType{TYPE1,TYPE2,TYPE3}
下拉按钮(
一旦更改:(值)=>打印(值),
项目:[
下拉菜单项(
子项:文本(“类型1”),
值:CustomType.TYPE1,
),
下拉菜单项(
子项:文本(“类型2”),
值:CustomType.TYPE2,
),
下拉菜单项(
子项:文本(“类型3”),
值:CustomType.TYPE3,
),
],
)
在枚举值上迭代

DropdownButton<CustomType>(
  onChanged: (value) => print(value),
  items: CustomType.values
      .map((type) => DropdownMenuItem(
            child: Text(type.toString().split('.')[1]),
            value: type,
          ))
      .toList(),
)
下拉按钮(
一旦更改:(值)=>打印(值),
项目:CustomType.values
.map((类型)=>下拉菜单项(
子项:文本(type.toString().split('.')[1]),
值:类型,
))
.toList(),
)

我希望这就是您要查找的内容。

在本例中,您有三个元素,因此很容易,如果我有大约50个元素,代码将太长。您可以迭代枚举值,查看更新的答案。
DropdownButton<CustomType>(
  onChanged: (value) => print(value),
  items: CustomType.values
      .map((type) => DropdownMenuItem(
            child: Text(type.toString().split('.')[1]),
            value: type,
          ))
      .toList(),
)