Skip to main content

Estado: Local x Global

Já sabemos que o Flutter utiliza o modelo declarativo para construir a interface. Vamos relembrar:

Declarativo

Aprofundando um pouco mais sobre o state (estado), temos dois tipos:

Global: Como o próprio nome sugere, um estado compartilhado por todo o aplicativo. Ex: usuário logado ou não. Esta informação deve estar disponível para todos os widgets.

Local: Estado isolado de um widget, quando não há a necessidade de compartilhá-lo com nenhum outro widget. Ex: Um botão so é habilitado quando os campos obrigatórios de um formulário estão preenchidos. Portanto, o estado de ativar/desativar tal botão, não precisa ser compartilhado para nenhum outro widget do aplicativo.

Ótimo, entendi a diferença entre estado global e local. E agora?

Vamos descobrir como implementá-los em Flutter.

Começaremos pelo estado local, por ser o mais simples. Utilizando o Stateful widget.

Em seguida, abordaremos algumas opções para gerenciar o estado global, com 3 opções diferentes: com o InheritedWidget, com o package provider e também o padrão [BLoC](https://www.didierboelens.com/2018/08/