1.enum 和 String的转换,
(这种方式需要dart v2.7.0+ flutter 3.0.0+)
enum PortType {
usbA('USB-A', isUsb: true),
usbC('USB-C', isUsb: true),
lightning('LIGHTNING'),
unknown('UNKNOWN');
final String name;
/// 判断是否是usb类型
final bool isUsb;
/// 构造器,每个类型都会调用这个方法
const PortType(this.name, {this.isUsb = false});
/// 字符串转枚举类型
static PortType formString(String name) {
return values.firstWhere((element) => element.name == name);
}
/// 转String
String toTypeString() {
return name;
}
/// 判断是否是某一类型,也可以使用添加属性的方式(final bool isUsb)
// static bool isUsb(PortType type) {
// return type == PortType.usbA || type == PortType.usbC;
// }
}
String p = "USB-A";
var res = PortType.formString(p);
print("lw=====>$res"); //lw=====>PortType.usbA
print("lw=====>${res.isUsb}"); //lw=====>true
print("lw=====>${res.toTypeString()}"); //lw=====>USB-A
如果版本不符合,那就只能使用Switch的方法进行转换了;
2.eunm 和 int转换
int index = PortType.lightning.index;
var type = PortType.values[index];
print("lw=====>index:$index====type:$type}"); //lw=====>index:2====type:PortType.lightning}