Entendendo os tipos de Widgets do Flutter

Fabiano Santana
Tableless
Published in
3 min readApr 14, 2019

Ao iniciar seu aprendizado com Flutter, uma das primeiras coisas que você precisará aprender é sobre os Widgets.

O que são Widgets?

Widgets nada mais são do que componentes que podem ou não possuir um estado e são usados para moldar nossa interface do usuário (UI).

O que é um “estado”?

Para exemplificar o que é estado, vamos utilizar o exemplo de um aplicativo de galeria de imagens.

Stateful Widget:

Stateful Widget são “componentes” que possuem um estado, ou seja, durante a execução pode haver alterações naquele componente sem precisar redirecionar para outra tela.

Observe a imagem acima, vemos que todos os elementos tracejados em amarelo são estados do nosso widget, caso o usuário pressione um álbum, imagem ou momento será exibido algumas opções, dentre elas a opção de exclusão.

Ao excluir um album, foto, momento, o usuário não será redirecionado para outra página, ele continuará na mesma e o estado dela sera atualizado, ou seja, o grid será recarregado com o novo estado sem os itens excluídos. Se você reparar bem, na segunda tela possui um contador, ao excluir um item, esse contador precisará ser atualizado, sendo assim, ele também é um atributo do nosso estado.

Stateless Widget:

Stateless Widget são componentes sem estado, ou seja, são componentes que não possuirão alteração após renderizado.

No exemplo da galeria ao clicar sobre uma thumb na galeria de imagens, o passo seguinte é exibir uma nova tela com a imagem em tamanho real para o usuário.

Qual o motivo dessa tela não possuir um estado?

Para responder essa pergunta, vamos listar as opções que um usuário teria nessa tela. Ele poderia compartilhar a imagem, editar a imagem ou excluir a imagem.

Alguma destas opções necessitaria que esta tela fosse atualizada?
Se você pensar bem, ao editar uma foto, o sistema abre outro aplicativo ou então chama outra página de edição. A edição de imagem geralmente não está dentro da mesma página de visualização.

Compartilhar não necessitaria atualizar o estado porque também chamaria outro widget para realizar a função de compartilhamento. Se você já tentou compartilhar alguma imagem ou qualquer coisa, já viu que abre um modal com as opções de aplicativos disponíveis para compartilhar. Essa janela modal é outro widget que sobrepõe nossa visualização.

Exclusão, este sim teria um efeito imediato na tela, porém você concorda que quando excluimos uma imagem o próximo passo é passar para a imagem seguinte ou então retornar a galeria?

Então novamente a tela não teria uma atualização do seu próprio estado.

Conclusão

Para criar um widget você pode utilizar qualquer um dos tipos disponíveis, porém é importante criar o tipo de widget certo para sua necessidade, pois a construção de um Stateful Widget consome mais memória do aparelho do que um Stateless Widget.

Sobre o autor da publicação

Sou Fabiano Santana, tenho 22 anos. Arquiteto de Sistemas com foco em .NET e Analista de Experiência do Usuário, conhecido como o famoso desenvolvedor Full Stack (prefiro chamar de fullydev) e UX Design. Amo de coração criação de UI e como ela aproxima as pessoas.

Seguem meus contatos caso queiram tirar alguma dúvida ou fazer sugestões para melhoria.

--

--

Fabiano Santana
Tableless

Arquiteto de Software .NET / Full Stack .NET Developer / Flutter Developer & UI Designer