如何将枚举绑定到 Flutter 中的 DropdownButton?
How to bind an enum to DropdownButton in Flutter?
是否可以将下拉按钮绑定到枚举?我创建了一个枚举并尝试将其绑定到下拉按钮,请参见下面的代码。感谢您对此的任何帮助。
enum ClassType {
Class-A,
Class-B,
Class-C,
Class-D
}
DropdownButton<String>(
value: classType,
onChanged: (String newValue) {
setState(() {
viewModel.classType = newValue;
});
},
items: ClassType.map((String classType) {
return DropdownMenuItem<String>(
value: classType,
child: Text(classType),
);
}).toList(),
)
首先,您需要将 DropdownButton 类型参数更新为 ClassType
而不是 String
。在 Dart 中,枚举声明创建了一个新类型,而不是字符串。
下拉按钮(...);
接下来,您需要更改枚举名称。枚举必须是有效的 dart 标识符,这意味着它不能包含符号 -
.
enum ClassType {A, B, C, D}
我还更新了你的 map
方法,你的枚举实例上没有静态迭代器,你必须将它们列出来。此外,您将需要手动将它们转换为字符串,方法是调用 toString
将得到 "ClassType.A"
、ClassType.B"
或编写您自己的函数来执行此操作。
return DropdownButton<ClassType>(
value: classType,
onChanged: (ClassType newValue) {
setState(() {
viewModel.classType = newValue;
});
},
items: ClassType.values.map((ClassType classType) {
return DropdownMenuItem<ClassType>(
value: classType,
child: Text(classType.toString()));
}).toList();
);
是否可以将下拉按钮绑定到枚举?我创建了一个枚举并尝试将其绑定到下拉按钮,请参见下面的代码。感谢您对此的任何帮助。
enum ClassType {
Class-A,
Class-B,
Class-C,
Class-D
}
DropdownButton<String>(
value: classType,
onChanged: (String newValue) {
setState(() {
viewModel.classType = newValue;
});
},
items: ClassType.map((String classType) {
return DropdownMenuItem<String>(
value: classType,
child: Text(classType),
);
}).toList(),
)
首先,您需要将 DropdownButton 类型参数更新为 ClassType
而不是 String
。在 Dart 中,枚举声明创建了一个新类型,而不是字符串。
下拉按钮(...);
接下来,您需要更改枚举名称。枚举必须是有效的 dart 标识符,这意味着它不能包含符号 -
.
enum ClassType {A, B, C, D}
我还更新了你的 map
方法,你的枚举实例上没有静态迭代器,你必须将它们列出来。此外,您将需要手动将它们转换为字符串,方法是调用 toString
将得到 "ClassType.A"
、ClassType.B"
或编写您自己的函数来执行此操作。
return DropdownButton<ClassType>(
value: classType,
onChanged: (ClassType newValue) {
setState(() {
viewModel.classType = newValue;
});
},
items: ClassType.values.map((ClassType classType) {
return DropdownMenuItem<ClassType>(
value: classType,
child: Text(classType.toString()));
}).toList();
);