Widgets
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 todo aplicativo é baseado em widgets.
"A ideia central é que você construa sua interface com widgets"
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 com essa divisão, fica fácil de 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 205 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.