# O pequeno grande ganho do enum no Dart 2.15

Como sabemos o `enum` no **Dart** tem limitações se comparado com outras linguagens 🙄, como exemplo, não podemos declarar membros e antes que se pergunte, sim, já temos essa solicitação em andamento, veja a [issue](https://github.com/dart-lang/language/issues/158) para acompanhar.

Outro ponto é que não havia uma forma de obter a `String` de um `valor` do `enum`.

Antes para conseguir esse "feito", era necessário, por exemplo, usar as `extensions`:

```dart
enum Day { monday, tuesday, wednesday, thursday, friday, saturday, sunday }

extension on Day {
  String get toShortString => toString().split('.').last;
}

print('It\'s ${Day.friday.toShortString}');
```

No **Flutter** ainda há um método chamado `describeEnum` que faz o mesmo, leia a [documentação](https://api.flutter.dev/flutter/foundation/describeEnum.html) para saber mais 📖
<br/>**Porém, aconselho a usar a forma que irei descrever adiante.**

## Agora no 2.15 🙏

Fazendo o mesmo uso das `extensions` acima, a equipe do **Dart** implementou alguns métodos visando melhorar a forma de se obter e trabalhar com essa `String`, eles são demonstrados abaixo:

```dart
enum Day { monday, tuesday, wednesday, thursday, friday, saturday, sunday }

print('It\'s ${Day.friday.name}');
print('It\'s ${Day.values.byName('monday').name}');
final enumMap = Day.values.asNameMap();
print('It\'s ${enumMap['sunday']?.name}');
```

Ae sim, bem melhor 🙌

Sabemos que ainda faltam melhorias, mas vamos aguardar os próximos capítulos 🕥

Bom já sabe neh?! Se curtiu, deixe um **like**, dá aquela **compartilhada** com outros `devs` e me **segue** nas redes sociais 🍻

### Links úteis

%[https://medium.com/dartlang/dart-2-15-7e7a598e508a]
%[https://stackoverflow.com/questions/29567236/dart-how-to-get-the-value-of-an-enum]
