Desafios e aprendizados ao integrar um aplicativo Android nativo com Flutter
Published: 2023-11-18 03:22:10

Olá pessoal, gostaria de compartilhar uma parte empolgante da minha jornada profissional. Nos últimos meses tenho participado de um projeto que integrou com sucesso um módulo Flutter em um aplicativo Android nativo. Essa experiência tem me ensinado muito, então decidi compartilhar alguns aprendizados, e posteriormente fazer um guia de como fazer essa integração da melhor forma possível.

## Contexto

A equipe já havia construído um aplicativo Android nativo robusto, mas queríamos aproveitar os benefícios do Flutter para economizar recursos e tempo de desenvolvimento, e alcançar as plataformas Android e iOS com uma única base de código. Então a ideia era criar um módulo Flutter onde iríamos desenvolver novas funcionalidades e integrar isso com o restante do aplicativo, além de refatorar funcionalidades quando for conveniente para conseguir realizar a migração completa do projeto.

## Desafios e Soluções

Enfrentamos alguns desafios interessantes durante o processo de integração. Alguns deles incluíram:

**Enviar e receber dados**: Unir as diferentes partes do aplicativo de maneira transparente foi um desafio, sempre que precisássemos navegar para uma funcionalidade que estava no Flutter por exemplo era essencial passar as informações necessárias, como os _headers_ para fazer requisições ou a sessão do usuário, e para cuidar dessa parte da comunicação com o módulo utilizamos _method channels_. Sem dúvidas essa é uma parte chave da integração, onde o módulo conversa com o nativo e vice-versa.

**Performance**: Garantir que o aplicativo integrado funcionasse perfeitamente e de maneira eficiente era essencial. O uso criterioso de recursos e a otimização foram cruciais, e a principal estratégia utilizada para este ponto foi fazer um _pre-warm_ da engine do Flutter ao iniciar o app, isso permitiu com que armazenássemos essa engine em cache para fornecer posteriormente a uma _FlutterActivity_, e assim ter uma transição mais suave ao navegar para uma funcionalidade do módulo Flutter.

**Colaboração da Equipe**: A colaboração entre desenvolvedores nativos e desenvolvedores Flutter foi fundamental. Por se tratar de um projeto relativamente grande, eventualmente ocorre a troca de integrantes da equipe, e para isso não se tornar um problema é essencial ter uma documentação de como a integração está funcionando, para que novos integrantes tenham uma absorção rápida e consigam se adaptar ao projeto. Em conjunto com a documentação também reservávamos um tempo para ajudar esclarecendo dúvidas e mostrando passo a passo como tudo funcionava, o que ajudou muito.

## Conclusão

Em resumo a integração de um módulo Flutter em um projeto Android nativo tem sido uma jornada desafiadora e recompensadora. A capacidade de se adaptar rapidamente a novas tecnologias se revelou crucial, e reconhecer as possibilidades que estas oferecem é fundamental para o crescimento profissional.

Além disso, destaco a importância de fomentar um ambiente colaborativo, onde a troca de conhecimento é elemento chave para o sucesso do projeto.

Obrigado por me acompanhar nesta jornada! Vou adorar ouvir suas histórias e experiências relacionadas à integração de tecnologias. Deixe-me saber nos comentários ou mensagens privadas.

Até mais!