DEV Community

Cover image for Enhanced Enums - Seus enums melhorados
Toshi Ossada for flutterbrasil

Posted on

Enhanced Enums - Seus enums melhorados

Enums é uma forma que posso trabalhar com valores predefinidos de forma constantes, uma vantagem disso é conseguirmos uma segurança em tempo de compilação, pois desta forma no momento que seu app estiver compilando, facilmente será identificado caso algum valor incorreto esteja sendo utilizado.

Vamos ao seguinte exemplo em que tenho uma classe Funcionario onde tem um método chamado imprimirRegimeContratacao que recebe uma String representando o tipo de contratação e me retorna uma descrição.

Isto me retornará o seguinte resultado.

Entretanto, se ao invés de passar “CLT” como parâmetro eu passar “clt”(em minúsculo) ocorrerá um problema.

O problema do código acima é que ele está muito aberto para que ele aceite qualquer tipo de informação, este é um ótimo tipo de cenário para a utilização de ENUMERADORES, utilizando a palavra enum posso facilmente criar um enumerador.

Desta forma eu não consigo mais passar um parâmetro inexistente, pois assim já estão predefinidos os valores que serão tratados.

Agora imagine que precisamos de um método que irá calcular o salário liquido do funcionário que irá receber o salário bruto e descontar o imposto de acordo com o tipo de contratação.


No dart podemos colocar o método que retorna a porcentagem de imposto dentro do enum, desta forma toda vez que for utilizar deste enum já tenho predefinido a porcentagem que ele irá pagar, pois ele é um valor constante.

Antigamente (antes do Dart 2.17 e Flutter 3.0) precisamos fazer isto através de extensions e com isso conseguimos criar métodos dentro de nosso enum.

No Flutter 3.0 tivemos o suporte ao Dart 2.17 que nos trouxe melhorias nos enumeradores possibilitando criarmos enums mais ricos com métodos e atributos, não necessitando criar extensions.

Desta forma podemos retirar a extension e passar todos os métodos para dentro do enum

Agora também podemos criar propriedades dentro do enum para pré definir valores que serão constantes (ESTAS PROPRIEDADES DEVEM SER FINAL E IREMOS PASSAR NO CONSTRUTOR)

Também posso trabalhar com contratos no enum, para predefinir métodos dos enums que irão implementá-los


Desta forma seus enumeradores ficam muito mais poderosos e muito mais legíveis, legal essa nova alteração né?

Tem vários exemplos em meu github entre, compartilhe e dê seu star em meu github :)

https://github.com/toshiossada

Image description

Entre em nosso discord para interagir com a comunidade: https://discord.com/invite/flutterbrasil
https://linktr.ee/flutterbrasil

Top comments (0)