Pular para o conteúdo principal

use_enums

Saiba mais sobre a regra de lint use_enums.

Estável
Correção disponível
Lançado no Dart 2.17

Use enums em vez de classes que se comportam como enums.

Detalhes

#

Classes que parecem enumerações devem ser declaradas como enums.

FAÇA usar enums quando for apropriado.

Candidatas a enums são classes que:

  • são concretas,
  • são privadas ou têm apenas construtores generativos privados,
  • têm dois ou mais campos static const com o mesmo tipo da classe,
  • têm construtores generativos que são invocados apenas no nível superior da expressão de inicialização desses campos estáticos,
  • não definem hashCode, ==, values ou index,
  • não estendem nenhuma classe além de Object, e
  • não têm subclasses declaradas na biblioteca que as define.

Para saber mais sobre como criar e usar esses enums, veja Declarando enums aprimorados.

RUIM:

dart
class LogPriority {
  static const error = LogPriority._(1, 'Error');
  static const warning = LogPriority._(2, 'Warning');
  static const log = LogPriority._unknown('Log');
​
  final String prefix;
  final int priority;
  const LogPriority._(this.priority, this.prefix);
  const LogPriority._unknown(String prefix) : this._(-1, prefix);
}

BOM:

dart
enum LogPriority {
  error(1, 'Error'),
  warning(2, 'Warning'),
  log.unknown('Log');
​
  final String prefix;
  final int priority;
  const LogPriority(this.priority, this.prefix);
  const LogPriority.unknown(String prefix) : this(-1, prefix);
}

Ativar

#

Para ativar a regra use_enums, adicione use_enums em linter > rules no seu arquivo analysis_options.yaml:

analysis_options.yaml
yaml
linter:
  rules:
    - use_enums

Se você usa a sintaxe de mapa YAML para configurar as regras de lint, adicione use_enums: true em linter > rules:

analysis_options.yaml
yaml
linter:
  rules:
    use_enums: true

Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.