loading...

Flutter — Lifecycle — Parte 1

lukesilva_dev profile image 🐙 Lukão 🐙 Updated on ・3 min read

Quem começou no desenvolvimento mobile através de linguagens nativas certamente se lembrará do ciclo de vida (lifecycle)das aplicações, cobrado até mesmo em entrevistas. Vem comigo que vou mostrar como ele funciona em Flutter.

Vem comigo

Stateless x Stateful widgets

Neste momento, você já deve ter percebido que há dois tipos de widgets em Flutter: stateless e statefull. *Stateless widgets são aqueles que não possuem um estado mutável e dependem exclusivamente das informações passadas no objeto em si. *Stateful widgets são aqueles que possuem um estado mutável, o qual poderá mudar durante o ciclo de vida dele. São úteis quando a parte da interface pode mudar dinamicamente.
Para seguir o intuito da postagem, focarei nos *stateful, uma vez que não há muito a ser discutido no do outro tipo(exceto, talvez, pelo método build(), que será explicado abaixo).

Finalmente, o lifecycle

Finalmente

initState()


Semelhante ao onCreate() e ao viewDidLoad().
É chamado quando o objeto é inserido na árvore — exatamente 1 vez por componente. Nele, dados poderão ser ligados a listas, classes serão instanciadas etc.

mounted

Todos os widgets possuem essa propriedade booleana que se torna “true” quando um BuildContext é associado a um estado.

addPostFrameCallback


Chamado uma única vez após o final de um frame.

didChangeDependencies()

Esse método é chamado logo após initState(). Se a chamada anterior ao build() referenciou algum InheritedWidget que depois mudou, será utilizado para notificar o objeto atual sobre a mudança.

build()

Descreve a parte da interface que o seu widget representa. É chamado em vários momentos, como:

  • Após initState;
  • após didUpdateWidget;
  • após uma chamada em setState;
  • após uma dependência do estado mudar (ex: InheritedWidget referenciado)
  • After a dependency of this State object changes (e.g., an InheritedWidget referenced by the previous build changes).
  • After calling deactivate and then reinserting the State object into the tree at another location.

didUpdateWidget()


Chamado quando a configuração do widget muda. Se o parent “rebuildar” e solicitar que o widget atual mude para mostrar um novo widget com o mesmo runtimeType e Widget.key, o framework atualizará o widget deste estado e referenciará um novo widget, e então chamará este método com o widget anterior como argumento. Reescreva o método para responder quando o widget mudar (para iniciar animações implícitas)

deactivate()


É chamado sempre que o estado é removido da árvore. Em alguns casos, ele será reinserido em outra parte da árvore.

dispose()


Esse método é chamado quando o objeto e o estado dele não serão “buildados” novamente. Despois deste método, a propriedade “mount” do widget é false, e ele é considerado como “unmounted” (desmontado). É nele que se cancela streams,animações etc.

Cansado
Como a postagem ficou bastante longa e todos devem estar como na gif acima, decidi escrever a última, WidgetsBindingObserver, em uma nova postagem. Em breve postarei o link dela aqui =D
**Não se esqueça de deixar o feedback nos comentários =D

Fontes:

Discussion

pic
Editor guide