#flutter #dart #enums
Вопрос:
У меня есть это перечисление, которое расширяет enum
дополнительные возможности.
enum MenuItemTagEnum { @JsonValue(0) nullObject, @JsonValue(1) american } extension MenuItemTag on MenuItemTagEnum { static Maplt;MenuItemTagEnum, Optiongt; items = lt;MenuItemTagEnum, Optiongt;{ MenuItemTagEnum.nullObject: Option( name: 'Null Object', id: MenuItemTagEnum.nullObject.index, iconCodePoint: 0xf54c), MenuItemTagEnum.american: Option( name: 'American', id: MenuItemTagEnum.american.index, iconCodePoint: 0xf803) }; Option get option =gt; items[this]!; String get name =gt; items[this]!.name; int get id =gt; items[this]!.id; int get iconCodePoint =gt; items[this]!.iconCodePoint; static Listlt;Optiongt; get options { return items.entries .map((option) =gt; option.value) .toList() .sortedBy((option) =gt; option.name); } }
Могу ли я удалить options
, option
, name
, id
, iconCodePoint
в базовый класс и расширить этот класс?
Вот так:
extension EnumEntity on Enum { static late Maplt;dynamic, Optiongt; items; Option get option =gt; items[this]!; String get name =gt; items[this]!.name; int get id =gt; items[this]!.id; int get iconCodePoint =gt; items[this]!.iconCodePoint; static Listlt;Optiongt; get options { return items.entries .map((option) =gt; option.value) .toList() .sortedBy((option) =gt; option.name); } }
Итак, чтобы было ясно, могу ли я MenuItemTag
продлить EnumEntity
, чтобы мне больше не нужно было объявлять options
, option
, name
, id
, iconCodePoint
in MenuItemTag
? Это потому, что у меня будет много родственных классов MenuItemTag
, и я буду повторять эти неизменные свойства для каждого из них. Items
должно быть, это единственное, что мне нужно объявить для всех братьев и сестер.