Widgets

Em Flutter, (quase) tudo é um Widget.

Todo aplicativo Flutter é um widget. Composto de outra centenas de widgets. Portanto, entende-los é mais do que a nossa obrigação. Uma coisa bacana, é que na própria documentação do Flutter, eles deixam claro que a inspiração para os widgets vieram do React. Assim como no framework do Facebook, todo aplicativo é baseado em componentes, no Flutter é baseado em widgets.

"A ideia central é que você construa sua interface com widgets"

Com esta afirmação, retirada da documentação, acredito que dá para entender, efetivamente, o que é um widget.

Pense no aplicativo como um LEGO, onde cada pequeno widget representa uma peça e ao final, várias peças compõem um brinquedo.

No Flutter, vários widgets são combinados para compor um aplicativo.

Existem apenas 2 tipos de widgets: Stateless e Stateful. Iremos abordar esta diferença na próxima seção.

Podemos classificar os widgets em 2 grupos principais: Layout e UI (user interface).

Certamente temos outros widgets que não se enquadram perfeitamente em nenhum destes grupos, mas para começar, fica fácil com essa divisão para identificar quando e quais widgets utilizar para construir uma interface.

Widgets de layout, são aqueles que se preocupam apenas em posicionar outros widgets. Alguns dos principais:

Widgets de interface, são aqueles que efetivamente estão visíveis ao usuário, como:

No catálogo, temos mais de 170 widgets documentados (vale a pena dar uma conferida).

Precisamos dar destaque para 2 conjuntos de widgets amplamente utilizados e que já abordei na seção Visão Geral, o primeiro e mais popular é o Material package, que segue as definições de layout do Material Design e o Cupertino package, seguindo as definições de design do iOS.

Ambos pacotes nos fornecem widgets ready-to-use, bastando importá-los no nosso projeto e utilizar. O time do Flutter é responsável pela construção e manutenção de cada um deles. Caso tenham mudanças ou novos componentes para as plataformas, será questão de tempo até serem implementados pelo Flutter.

Nada nos impede de criarmos um app com a "cara" do iOS para Android e vice-versa. Também não significa que nosso aplicativo sempre terá uma aparência ios-style ou android-style, muito pelo contrário. Flutter nos proporciona níveis incríveis de personalização.

Fontes:

https://flutter.dev/docs/development/ui/widgets-intro