首页 > 解决方案 > 对 dart 中的多个枚举应用相同的扩展

问题描述

是否有可能将相同的飞镖扩展应用于多个枚举?这是我的枚举和扩展。

enum Currency {
  EUR, INR, USD, CNY, JPY, GBP
}

extension ParseToString on Currency {
  String toShortString() {
    return this.toString().split('.').last;
  }
}

有没有可能让它像

enum InvoiceStatus {
  DRAFT, SENT, PAID, PARTIALLY_PAID
}

extension ParseToString on Currency, InvoiceStatus {
  String toShortString() {
    return this.toString().split('.').last;
  }
}

标签: dartenums

解决方案


虽然没有办法为多个枚举添加扩展,但由于 dart2.14所有枚举都扩展了一个公共接口:Enum。这允许您向所有枚举添加扩展:

extension on Enum {
  String toShortString() {
    return this.toString().split('.').last;
  }
}

之后,您可以使用.toShortString()任何枚举对象。


推荐阅读