dart enum,String, int转换

1,237 阅读1分钟

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}