O Flutter é um SDK do Google para criação de aplicações multi plataformas (web e aplicativos Android e iOS) a partir de um único código fonte. Sua primeira versão foi em 2017, sendo a mais estável em 2018 e já tem um grande uso nas empresas atualmente, por exemplo Alibaba, Hamilton Musical Ele utiliza a linguagem de programação Dart como base, que também foi desenvolvida pelo Google.
Ele é uma ótima opção para desenvolvimento pois agiliza muito a codificação, não precisando se preocupar em desenvolver um aplicativo iOS e depois codificar novamente para o Android e depois ainda codificar a mesma aplicação na plataforma web.
A sua estrutura é simples de entender, o Flutter trabalha com o método de programação orientada a objetos e uso de componentes (widgets) inseridos na tela. Basicamente tudo na tela é um componente (caixas de texto, listas, botões, etc) e através deles, são inseridos os componentes filhos que por sua vez, podem ter mais componentes filhos (será possível entender melhor nos próximos artigos, quando codificarmos um aplicativo).
A linguagem de programação utilizada se chama Dart. Ela foi criada pelo Google em 2011 com o objetivo de substituir o Javascript, mas não conseguiu. Em Abril/2020 o Dart ainda está muito menos popular que o Javascript segundo pesquisa disponibilizada pelo Tiobe.com, com uma diferença de 16 posições.
Como vantagem, o Flutter não precisa de uma ponte de interpretação do código e transformar na linguagem nativa, pois o compilador faz diretamente por binário e executa na plataforma nativa. Com isso, a sua performance é melhor por executar menos tarefas.
Um recurso que destaca o Flutter de outros SDK é o "Hot Reload". Quando é feito alguma alteração no código fonte, geralmente é necessário recompilar a aplicação para que o aplicativo ou navegador reconheça e disponibilize em tela, mas com o Flutter isso foi simplificado. Quando o código é alterado e salvo, a máquina virtual do Dart atualiza as classes do projeto com a nova versão dos arquivos e o Flutter recompila os widgets de forma automática, atualizando os componentes em tela em tempo de execução.