Conheça o Flutter, a aposta da Google para a criação de apps nativos multiplataforma

Paulo Henrique
Liferay Engineering Brazil
4 min readJun 18, 2018
Resultado de imagem para flutter

Olá pessoas! Há algum tempo tenho estudado e trabalhado com tecnologias cross-platform, por isso resolvi escrever sobre Flutter, a mais recente investida da Google em mobile.

O que é Flutter?

Flutter é uma SDK para desenvolvimento mobile lançada em 2017 pela Google, capaz de criar apps para Android e iOS com um único código. O framework foi totalmente desenvolvido em Dart, uma linguagem de propósito geral criada pela Google e muito similar a C# e Java, compilando código nativo para ARM e x86.

A promessa é de bons momentos tanto para o desenvolvedor quanto para o usuário, com ótimos plugins para VS Code e Android Studio/IntelliJ IDEA e resultando em aplicativos com experiência e performance nativas.

Como isso acontece?

Para entender melhor essas vantagens vale a pena compararmos o Flutter com o seu maior concorrente (e inspiração), o ReactNative. No ReactNative os componentes são mantidos em uma árvore virtual e a cada mudança de estado o framework atualiza a árvore de componentes da plataforma. Essa comunicação é feita através de uma bridge, já que ReactNative possui códigos em JavaScript e não compila para código nativo.

Diagrama de renderização do ReactNative

No Flutter há apenas uma árvore de widgets, onde uma camada de renderização executa chamadas diretamente ao canvas da plataforma, não havendo necessidade de uma bridge já que Dart compila para código nativo.

Diagrama de renderização do Flutter

Então o Flutter não utiliza os componentes da plataforma? Isso, os desenvolvedores da SDK decidiram recriar toda a experiência das plataformas (Android e iOS) em widgets próprios do Flutter, evitando o controle de duas árvores de componentes (virtual e nativa).

Mas o que são Widgets?

Podemos entender widgets como componentes, porém no Flutter há um detalhe, Everything’s a Widget (Tudo é um Widget). Esse é um lema que os desenvolvedores levaram a sério ao criar o Flutter. Dessa forma elementos estruturais, como botões, caixas de texto e menus; elementos de estilo como fonte, cores e temas; aspectos de layout como espaçamento e posicionamento; até o controle de gestos e o próprio aplicativo são widgets.

Scaffold: widget que implementa a estrutura base de um app usando Material Design

Além de widgets mais básicos, há vários outros widgets adaptados à cada plataforma. A implementação do Material Components contempla todos os componentes disponíveis no desenvolvimento Android. Já o Cupertino implementa widgets com alta fidelidade ao comportamento esperado por usuários do iOS.

Composição > Herança

Os widgets são compostos de vários widgets menores e de propósito único, por exemplo, um widget de botão é constituído de widgets que dão forma, estilo e controle de gestos. No código abaixo criamos um widget que funciona como um botão simples, com o evento de toque onTap e customização de texto e cor, observe no método build.

Reativo!

Sim, o Flutter também é reativo, é possível controlar um widget de modo a recriá-lo sempre que as mudanças impactem no estado, sejam mudanças visuais ou de comportamento. Os widgets com esse controle interno são chamados de Stateful, herdando da classe StatefulWidget.

Abaixo temos um código de um contador, onde a cada toque no botão um valor é incrementado e exibido em tela, para isso precisamos usar o método setState, que indica ao Flutter a necessidade de recriar o widget.

Mas certamente você observou que o widget MyButton do primeiro código herda da classe StatelessWidget, nesse caso o controle de estado é feito por quem usa o widget, no caso o evento de onTap é definido externamente.

Devo usar?

Apesar da estabilidade já apresentada o Flutter deve precisar de mais algum tempo para que uma release oficial seja lançada. E ainda há o fator comunidade, pois ainda não é tão simples achar informações para problemas e cenários mais específicos. Então não, a não ser que você seja um aventureiro é melhor aguardar um pouco para usar em produção, mas sim, vale a pena manter no radar e estudar sobre o framework.

É muito cedo para afirmar, mas a tendência é que a longo prazo Google torne o Flutter a forma padrão de criar apps para Android. Um fato interessante é que todos os aplicativos já são compatíveis com o Google Fuchsia, o futuro sistema operacional da Google, que está sendo desenvolvido usando Dart e Flutter.

Para saber mais!

Disponibilizei um projeto no GitHub no qual desenvolvi experimentos simples aplicando os conceitos propostos pela SDK, como a criação e reuso de widgets e o acesso à recursos nativos como SharedPreferences.

Abaixo alguns links com informações interessantes e uma apresentação sobre Flutter:

Slides: Desenvolvendo Apps Nativos com Flutter

--

--