Playlist: Curso Grátis de FLUTTER e DART Completo
Diferencie entre estado efêmero e estado do aplicativo
Estado efêmero
Estado do aplicativo
Este documento apresenta o estado do aplicativo, o estado efêmero e como você pode gerenciar cada um deles em um aplicativo Flutter.
No sentido mais amplo possível, o estado de um aplicativo é tudo o que existe na memória quando o aplicativo está em execução. Isso inclui os recursos do aplicativo, todas as variáveis que o framework Flutter mantém sobre a interface do usuário, o estado da animação, as texturas, as fontes e assim por diante. Embora essa definição de estado mais ampla possível seja válida, ela não é muito útil para arquitetar um aplicativo.
Primeiro, você nem gerencia algum estado (como texturas). O framework lida com aqueles para você. Portanto, uma definição de estado mais útil é “qualquer dado que você precise para reconstruir sua interface a qualquer momento”. Segundo, o estado que você gerencia sozinho pode ser separado em dois tipos conceituais: estado efêmero e estado do aplicativo.
Estado efêmero
O estado efêmero (às vezes chamado de estado da interface do usuário ou estado local) é o estado que você pode conter em um único widget.
Esta é, intencionalmente, uma definição vaga, então aqui estão alguns exemplos.
Em outras palavras, não há necessidade de usar técnicas de gerenciamento de estado (ScopedModel, Redux, etc.) nesse tipo de estado. Tudo que você precisa é de um StatefulWidget.
Abaixo, você vê como o item atualmente selecionado em uma barra de navegação inferior é mantido no campo _index da classe _HomepageEstado. Neste exemplo, _index é um estado efêmero.
Aqui, usar setState () e um campo dentro da classe StatefulWidget’s State é completamente natural. Nenhuma outra parte do seu aplicativo precisa acessar _index. A variável só muda dentro do widget MyHomepage. E, se o usuário fechar e reiniciar o aplicativo, você não se importará que o _index seja zerado.
Estado do aplicativo
O estado que não é efêmero, que você deseja compartilhar em várias partes do seu aplicativo e que deseja manter entre as sessões do usuário, é o que chamamos de estado do aplicativo (às vezes também chamado de estado compartilhado).
Exemplos de estado da aplicação:
Preferências de usuário
Informações de login
Notificações em um aplicativo de rede social
O carrinho de compras em um aplicativo de comércio eletrônico
Estado lido / não lido de artigos em um aplicativo de notícias
Para gerenciar o estado do aplicativo, você deve pesquisar suas opções. Sua escolha depende da complexidade e da natureza do seu aplicativo, da experiência anterior da sua equipe e de muitos outros aspectos. Leia.
Não há regra clara
Para ser claro, você pode usar State e setState () para gerenciar todo o estado do seu aplicativo. Na verdade, a equipe Flutter faz isso em muitas amostras de aplicativos simples (incluindo o aplicativo inicial que você obtém com cada criação de flutter).
Vai para o outro lado também. Por exemplo, você pode decidir que, no contexto de seu aplicativo específico, a guia selecionada em uma barra de navegação inferior não é um estado efêmero. Você pode precisar alterá-lo de fora da classe, mantê-lo entre as sessões e assim por diante. Nesse caso, a variável _index é o estado do aplicativo.
Não existe uma regra clara e universal para distinguir se uma variável específica é efêmera ou um estado de aplicativo. Às vezes, você terá que refatorar um no outro. Por exemplo, você começará com um estado claramente efêmero, mas à medida que seu aplicativo crescer em recursos, ele precisará ser movido para o estado do aplicativo.
Por esse motivo, faça o seguinte diagrama com um grande grão de sal:
Um fluxograma. Comece com ‘Data’. ‘Quem precisa disso?’ Três opções: ‘Most widgets’, ‘Some widgets’ e ‘Single widget’. As duas primeiras opções levam ao ‘estado do aplicativo’. A opção “Widget único” leva a “Estado efêmero”.
Quando perguntado sobre o setState do React versus a loja do Redux, o autor do Redux, Dan Abramov, respondeu:
“A regra é: faça o que for menos complicado.”
Em resumo, existem dois tipos conceituais de estado em qualquer aplicativo Flutter. O estado efêmero pode ser implementado usando State e setState () e geralmente é local para um único widget. O resto é o seu estado de aplicativo. Ambos os tipos têm seu lugar em qualquer aplicativo Flutter, e a divisão entre os dois depende da sua preferência e da complexidade do aplicativo.