Tiago Aguiar recebe Jacob Moura, fundador da comunidade Flutterando, para uma conversa aprofundada sobre o Flutter: de onde veio o problema que ele resolve, por que a Google optou por desenhar cada widget do zero e o que esperar de mercado para quem decide investir no framework hoje.
Jacob Moura é fundador da Flutterando, comunidade brasileira de Flutter ativa desde 2018 e hoje a maior da América Latina dedicada ao framework. A comunidade reúne mais de 14 mil pessoas entre Discord e Telegram e um canal no YouTube com quase 60 mil inscritos, oferecendo conteúdo gratuito do básico ao avançado — de roadmap de aprendizado a ajuda para conseguir a primeira vaga na tecnologia.
Muito antes de iOS e Android existirem, empresas que desenvolviam em C já enfrentavam o problema de compilar o mesmo código para sistemas operacionais diferentes. O Java tentou resolver isso com uma máquina virtual que mediava a comunicação entre o código e o sistema operacional — mas o mesmo problema reapareceria anos depois, multiplicado pela chegada de iPhone, Android e Windows Phone.
"Naquela época a galera tinha um problema: na hora que desenvolviam em C, tinha que buildar para o Windows, tinha que buildar para alguns Linux, tinha que buildar para o Solaris e para o Mac" por Jacob Moura
As primeiras tentativas de resolver o cross-platform mobile usavam WebView — pacotar um site em HTML e CSS dentro de cada plataforma, como fazia o Cordova. O React Native, a partir de 2015, avançou ao traduzir componentes para os widgets nativos (os chamados widgets OEM) na hora da compilação, mas manteve a lógica de negócio em JavaScript, que precisava ser convertida para a linguagem nativa através de uma ponte.
"A parte da regra de negócio, que era JavaScript, ela não podia ser compilada, então ela precisava ser convertida para a linguagem nativa... e isso gerava um gargalo" por Jacob Moura
Em vez de traduzir componentes para os widgets do sistema operacional, o Flutter desenha cada elemento de tela do zero usando a engine gráfica Skia — originalmente criada para jogos, no mesmo espírito de motores como o Unity. Isso elimina a dependência de pontes de tradução e permite compilar nativamente tanto a interface quanto a regra de negócio.
"O Flutter tenta fazer o quê? Ele desenha a tela toda e compila nativamente tanto a parte da regra de negócio quanto a parte do desenho de tela" por Jacob Moura
A linguagem Dart surgiu em 2011 como tentativa da Google de substituir o JavaScript, com uma VM embarcada diretamente no Chrome. O projeto não emplacou e foi abandonado — anos depois, foi resgatado como a linguagem ideal para o Flutter, já que sua sintaxe foi padronizada pela mesma organização (ECMA) responsável por C#, Java e JavaScript, o que reduz bastante a curva de aprendizado para quem já programa.
"Ele foi criado para substituir o JavaScript, em 2011... falhou miseravelmente, a comunidade não adotou, não teve jeito e tudo mais e foi abandonado" por Jacob Moura
Por baixo, o Flutter reúne a linguagem Dart, a engine Skia e um "embed" próprio para cada plataforma — o que forma o Toolkit. Por cima, existe uma camada de alto nível com os widgets prontos do Material e do Cupertino, que permite ao desenvolvedor trabalhar de forma declarativa e orientada a objetos, sem lidar diretamente com a parte de baixo nível.
"O Flutter é tanto um Toolkit para fazer esses builds... quanto também um Framework, onde tem um Framework em Dart, com todas as ferramentas do Material, do Cupertino, com esses widgets pré-prontos" por Jacob Moura
Diferente de ecossistemas onde é preciso escolher e configurar bibliotecas de teste à parte, o Flutter traz nativamente ferramentas para testes unitários, testes de widget (possíveis porque telas são classes) e o Flutter Drive, que substitui ferramentas como o Robotium abrindo o próprio emulador para rodar testes de integração — sem exigir conhecimento de ferramentas externas como Appium.
"O Flutter Drive... ele substitui outras tecnologias como o Robotium e tudo mais, ele basicamente vai abrir o emulador... isso tudo construído e escrito em Dart, já vindo nativamente" por Jacob Moura
"Seja expert em programação e o que aparecer no mercado você domine. Essa é a ideia: se você sabe programar, você não fica sem emprego" por Jacob Moura