Capítulo 45 — StatelessWidget, StatefulWidget e ciclo de vida
Parte 1B — Criar aplicativos Flutter · Capítulo 45 de 62 · 7 h
Capítulo 45 — StatelessWidget, StatefulWidget e ciclo de vida
Nível: iniciante / intermediário Duração estimada: 7 h Pré-requisitos: capítulo 44 — Os widgets e a árvore de widgets O que você saberá fazer ao final: decidir se um widget deve ser
StatelessWidgetouStatefulWidget, armazenar um estado em uma classeState, modificá-lo corretamente comsetState(), inicializar e liberar recursos nos momentos certos do ciclo de vida e elevar um estado até um pai comum.
45.0 — Objetivos do capítulo
Ao final deste capítulo, você será capaz de:
- explicar o que é o "estado" de uma interface;
- distinguir o que muda em uma interface do que não muda;
- definir precisamente um
StatelessWidget; - escrever um
StatelessWidgetdo zero; - explicar o papel exato do método
build(); - explicar por que todas as propriedades de um widget sem estado são
final; - passar dados para um widget por meio do construtor;
- explicar por que um
StatefulWidgeté composto por duas classes; - escrever uma classe
State<T>; - colocar as variáveis de estado no lugar certo;
- usar
setState()corretamente; - descrever o que
setState()realmente faz no framework; - escrever o contador, exemplo canônico do Flutter;
- reconhecer o bug silencioso do estado modificado fora de
setState(); - medir o custo de um
setState()desnecessário; - acessar as propriedades do widget a partir do estado com
widget.propriedade; - ler e desenhar o ciclo de vida completo de um
State; - usar
createState(),initState(),didChangeDependencies(),build(),didUpdateWidget(),deactivate()edispose(); - liberar um controlador em
dispose(); - usar
mountedpara evitar umsetState()após a desmontagem; - escolher entre estado local e estado elevado;
- praticar a elevação de estado (lifting state up);
- fazer uma ação descer por meio de um callback;
- apontar os limites dessa abordagem e saber o que o capítulo 52 trará;
- aplicar uma árvore de decisão "stateless ou stateful?".
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão