Dominando Enums no Flutter – Uso Limpo, Escalável e de Nível Profissional

Quando comecei a escrever aplicativos em Flutter, eu usava enums como a maioria das pessoas — apenas como constantes. Mas, ao longo dos anos, percebi que os enums são mais do que apenas listas sofisticadas. Quando usados corretamente, eles limpam seu código, potencializam a lógica da sua UI e escalam junto com seu aplicativo [6].

Aqui estão meus truques (hacks) favoritos com enums.

1. Serialização Fácil para APIs e Armazenamento.

Precisa salvar valores de enum no armazenamento local ou enviá-los pela rede? Não há necessidade de mapeamento manual ou métodos auxiliares extras — os enums do Dart possuem uma propriedade nativa .name que torna isso ridiculamente simples. E com .values.byName(), fazer a conversão de volta (parsing) é igualmente limpo.

enum Status { pending, approved, rejected }

// To JSON or SharedPreferences
final String saved = Status.approved.name; // "approved"

// From JSON or storage
final Status parsed = Status.values.byName(saved); // Status.approved

2. Aplique Builders Baseados em Enums.

Em vez de poluir sua UI com blocos switch ou if-else, deixe os enums construírem seus próprios widgets usando extensões (extensions). Esse padrão permite que seu enum decida qual widget renderizar, tornando sua árvore de widgets mais limpa e fácil de manter.

enum LoaderType { shimmer,custom, circular }

extension LoaderX on LoaderType {
  Widget build() => switch (this) {
    LoaderType.shimmer => ShimmerLoader(),
    LoaderType.custom => CustomLoader(),
    LoaderType.circular => CircularProgressIndicator(),
  };
}

3. Enum como uma Classe Construtora de UI.

Em vez de poluir seu código de UI com declarações switch, você pode transformar enums em fábricas de widgets autocontidas, atribuindo a eles campos, construtores e métodos de construção (builder methods). Isso torna seus componentes de UI escaláveis, testáveis e super limpos.

enum ButtonType {
  primary(icon: Icons.check, color: Colors.blue),
  danger(icon: Icons.warning, color: Colors.red);

  final IconData icon;
  final Color color;

  const ButtonType({required this.icon, required this.color});

  Widget build(String label, VoidCallback onPressed) {
    return ElevatedButton.icon(
      onPressed: onPressed,
      icon: Icon(icon),
      label: Text(label),
      style: ElevatedButton.styleFrom(backgroundColor: color),
    );
  }
}

Uso:

ButtonType.danger.build("Delete", () => print("Deleted"));

Enums não são apenas constantes — eles podem ser uma ferramenta poderosa que torna seu código mais limpo, mais inteligente e mais fácil de escalar.

Tem seus próprios truques com enums? Deixe-os nos comentários — eu adoraria aprender com seus padrões também!

Se isso ajudou, compartilhe com seu círculo de desenvolvedores e não se esqueça de me seguir para mais dicas de Flutter como esta.

Please follow and like us:
error0
fb-share-icon
Tweet 20
fb-share-icon20