DEV Community

Cover image for Por que o GetX é um ótimo gerenciador de estado no Flutter
Henrique Pomatti dos Santos
Henrique Pomatti dos Santos

Posted on

1

Por que o GetX é um ótimo gerenciador de estado no Flutter

Bom, então bora lá!

Eu já venho há algum tempinho utilizando o Getx para gerenciamento de estado dentro do Flutter e venho me surpreendendo cada vez mais com o seu poder, e aqui eu vou passar alguns motivos do por quê estou gostando dele, bora!

Primeiramente, vamos abordar outros gerenciamentos de estado e suas premissas.

Provider - Um wrapper em torno do Inherited Widget para torná-los mais fáceis de usar e reutilizáveis.

setState - A abordagem de baixo nível padrão do Flutter.

InheritedWidget & InheritedModel - A abordagem de baixo nível usada para se comunicar entre ancestrais e filhos na árvore do widget. Isso é o que o Provider e muitas outras abordagens usam por debaixo dos panos.

Provider - Uma abordagem de container de estado familiar a muitos desenvolvedores da web e deve permanecer no mundo da web! rsrsrs.

Fish Redux - Fish Redux é uma estrutura de aplicativo de flutter montada baseada no gerenciamento de estado Redux. É adequado para a construção de aplicações de médio e grande porte.

GetIt - Uma abordagem de gerenciamento de estado baseada em localizador de serviço que não precisa de um BuildContext.

MobX - Uma biblioteca popular baseada em observáveis ​​e reações.

BloC - Uma família de padrões baseados em fluxo / observáveis.

RiverPod - Uma abordagem semelhante ao Provider que é seguro para compilação e testável. Ele não depende da SDK do Flutter.

Agora, a melhor parte, o por quê o GetX é o mais fera!

Getão

  1. Atualiza apenas os widgets necessários.

  2. Não usa changeNotifier, é o gerenciador de estado que usa menos memória (perto de 0 MB).

  3. Esqueça StatefulWidget! Com Get, você nunca precisará disso. Com os outros gerenciadores de estado, você provavelmente terá que usar um StatefulWidget para obter a instância de seu Provider, BLoC, MobX Controller, etc. Mas você já parou para pensar que seu appBar, seu scaffold e a maioria dos widgets que estão em sua classe são apátridas? Então, por que salvar o estado de uma classe inteira, se você só pode salvar o estado do widget que tem estado? O Get também resolve isso! Crie uma classe sem estado, torne tudo sem estado. Se você precisar atualizar um único componente, envolva-o com GetBuilder e seu estado será mantido.

  4. Organize seu projeto de verdade! Os controladores não devem estar em sua UI, coloque seu TextEditController ou qualquer controlador que você use em sua classe Controller.

  5. Você precisa acionar um evento para atualizar um widget assim que ele for renderizado? GetBuilder possui a propriedade “initState”, assim como StatefulWidget, e você pode chamar eventos de seu controlador, diretamente dele, sem mais eventos sendo colocados em seu initState.

  6. Você precisa acionar uma ação como fechar streams, temporizadores e etc? GetBuilder também possui a propriedade dispose, onde você pode chamar eventos assim que o widget for destruído.

  7. Use streams apenas se necessário.
    Você pode usar seus StreamControllers dentro de seu controlador normalmente e usar o StreamBuilder também normalmente, mas lembre-se, um fluxo consome memória razoavelmente, a programação reativa é bonita, mas você não deve abusar dela. 30 fluxos abertos simultaneamente podem ser piores do que o changeNotifier (e o changeNotifier é muito ruim).

Get é onisciente e, na maioria dos casos, sabe exatamente a hora certa para esgotar a memória de um controlador. Você não deve se preocupar com quando descartar um controlador, Get sabe o melhor momento para fazer isso.

Fechou!

Hot sauce if you're wrong - web dev trivia for staff engineers

Hot sauce if you're wrong · web dev trivia for staff engineers (Chris vs Jeremy, Leet Heat S1.E4)

  • Shipping Fast: Test your knowledge of deployment strategies and techniques
  • Authentication: Prove you know your OAuth from your JWT
  • CSS: Demonstrate your styling expertise under pressure
  • Acronyms: Decode the alphabet soup of web development
  • Accessibility: Show your commitment to building for everyone

Contestants must answer rapid-fire questions across the full stack of modern web development. Get it right, earn points. Get it wrong? The spice level goes up!

Watch Video 🌶️🔥

Top comments (0)

Playwright CLI Flags Tutorial

5 Playwright CLI Flags That Will Transform Your Testing Workflow

  • 0:56 --last-failed
  • 2:34 --only-changed
  • 4:27 --repeat-each
  • 5:15 --forbid-only
  • 5:51 --ui --headed --workers 1

Learn how these powerful command-line options can save you time, strengthen your test suite, and streamline your Playwright testing experience. Click on any timestamp above to jump directly to that section in the tutorial!

Watch Full Video 📹️

👋 Kindness is contagious

If you found this post useful, please drop a ❤️ or leave a kind comment!

Okay