Flutter e Código Nativo: aprenda a realizar a integração

Flutter e código Nativo: aprenda a realizar a integração

O desenvolvimento de aplicativos móveis tornou-se essencial nos dias e no mundo em que vivemos atualmente.  A ascensão dos smartphones e tablets trouxe consigo uma revolução digital que impactou todos os aspectos da nossa sociedade e transformou a maneira como vivemos, trabalhamos e nos conectamos.

Com o aumento dessa demanda por aplicativos, os desenvolvedores enfrentam o desafio de criar soluções rápidas, eficientes e com uma experiência de usuário de alta qualidade, eficaz, segura e atraente. Sendo assim o Flutter surge como uma ótima ferramenta para a criação de aplicativos híbridos

Mas em alguns cenários necessitamos realizar integração com recursos nativos de cada plataforma. Neste artigo vamos abranger um pouco sobre como funciona esta integração do Flutter e Código Nativo.

Associação do Flutter e Código Nativo

O Flutter é um framework de código aberto desenvolvido pelo Google para a criação de aplicativos multiplataforma, ou seja, ele permite que você desenvolva aplicativos para diferentes sistemas operacionais, como Android, iOS, web e desktop, a partir de um único código base. Uma das características mais distintas do Flutter é a sua abordagem de construção de interfaces de usuário altamente personalizadas e responsivas.

Quando se trata da integração do Flutter e Código Nativo, como Java/Kotlin para Android e Swift/Objective-C para iOS, o Flutter oferece um mecanismo chamado “Flutter Platform Channels“. Esse recurso permite a comunicação bidirecional entre o código Flutter e Código Nativo, possibilitando que você utilize recursos específicos da plataforma ou componentes nativos quando necessário.

A integração do Flutter e Código Nativo é útil quando você precisa acessar APIs nativas específicas que não estão disponíveis no Flutter, ou quando deseja otimizar certos aspectos do aplicativo para cada plataforma. 

No entanto, é importante lembrar que a integração com o código nativo pode adicionar complexidade ao projeto e requerer conhecimento tanto do Flutter quanto do desenvolvimento nativo. Portanto, é recomendável avaliar cuidadosamente as necessidades do seu aplicativo antes de optar por essa abordagem.

 

Integração do Flutter e Código Nativo

Com o Flutter podemos criar os mais diversos tipos de aplicativos, desde apps simples até apps mais complexos, e em alguns casos é necessário acessar recursos específicos do sistema operacional (Android / iOS), que não são suportados pelo framework.

O Flutter oferece os recursos de integração com Código Nativo abaixo.

Plataformas suportadas:

  • Platform Channels: Com o Platform Channels é possível enviar e receber mensagens entre o código Dart (Flutter) e o Código Nativo, no Android com Java ou Kotlin e no iOS com Objective C ou Swift.
  • Plugins: Existe uma variedade de plugins para serem utilizados com o Flutter, esses plugins podem ser de criação própria ou da comunidade. Trazem de forma mais fácil e ágil a integração com recursos específicos, como câmera, GPS, armazenamento e afins. Eles trazem a utilização desses recursos de forma encapsulada, facilitando seu uso no dia a dia.
  • Native Views: Esta funcionalidade permite exibir componentes nativos na própria interface do Flutter, ou seja, é incorporado componentes visuais do nativo em widgets do Flutter, assim coexistindo componentes das duas plataformas.

 

Comunicação com Nativo através do MethodChannel

O MethodChannel permite a comunicação bi-direcional entre as plataformas. É usado para chamar métodos, podendo enviar argumentos entre os ambientes.

O MethodChannel segue o padrão de cliente-servidor. O cliente (Flutter), você define um canal para enviar chamadas assíncronas de método para a plataforma nativa. O servidor (Nativo), você implementa a lógica para receber essas chamadas, processá-las e assim retornar o resultado para o cliente (Flutter).

Comunicação com Nativo através do MethodChannel

 

Confira esse exemplo de Integração do Flutter e Código Nativo

Obs: Vamos criar o exemplo somente para a Plataforma Android.

Iremos criar um app para verificação do percentual da bateria, sendo que a consulta ao hardware será feita no lado do nativo, e essa informação será enviada para o Flutter e apresentada em tela.

  1. No Flutter (Cliente), vamos criar uma classe chamada BatteryChannelService, que será responsável por chamar o nativo e responder para o Flutter o percentual da bateria.
  • Criamos uma instância de MethodChannel passando como argumento o nome do canal a ser utilizado.

Em seguida temos a criação do método getBatteryLevel, responsável por chamar o código nativo e retornar um valor do tipo int pelo canal determinado anteriormente e invocando o método getNativeBattery, este que será implementado no Nativo mais a frente.

classe chamada BatteryChannelService

  1. Em uma página vamos realizar a instância da classe BatteryChannelService, criar um método local para chamarmos o getBatteryLevel de forma assíncrona e atribuirmos o resultado a uma variável para ser apresentada em tela.

    instância da classe BatteryChannelService
  2. Adicionar um botão na tela para realizarmos a ação de consultar.
    Adicionar um botão na tela para realizarmos a ação de consultar
  3. No Nativo (Kotlin / Java)

Aqui temos a criação de um método local para consultar o status da bateria pelos serviços da API do Nativo. Devido a atualizações da plataforma, o meio de consulta foi alterado a partir da versão Lollipop, notem que existe uma verificação para a versão do Android.

Faremos a sobrescrita do método configureFlutterEngine, este é o responsável por realizar o tratamento das chamadas dos métodos vindos do Flutter pelo canal especificado.

método configureFlutterEngine
5. Com isso temos o seguinte resultado em tela.resultado em tela do flutter com nativo

 

Considerações Finais

O MethodChannel é uma parte essencial para integração do Flutter com o Nativo, ele permite que você acesse recursos específicos do sistema operacional de forma simples e eficiente. Ao utilizar esses recursos você pode expandir as funcionalidades do seu aplicativo e oferecer uma melhor experiência para o usuário.

Gostou dessas dicas de integração do Flutter e Código Nativo? Aqui no blog da Lyncas você encontra outras dicas bem interessantes de programação! Aproveite para ler: Novas funcionalidades do Flutter e Dart 3.

 

João Silva

João Silva

Desenvolvedor Mobile e Backend, iniciou no mundo da programação por um acaso, e assim já fazem 12 anos. Passando pelas linguagens Pascal, Object Pascal (Deplhi), Java, Clarion 6, e atualemente C# no backend e Dart/Flutter no mobile. Aficionado por filmes, séries e animes ( CDZ, YuYu Hakusho, mas principalmente One Piece ☠️).

Artigos relacionados

Os impactos do excesso de projetos simultâneos na produtividade de equipes bancárias

Os impactos do excesso de projetos simultâneos na produtividade de equipes bancárias

Gerenciar equipes de tecnologia em bancos exige equilíbrio entre inovação,..

Continuar lendo
Transformando desafios em oportunidades: A modernização tecnológica no setor de seguros

Transformando desafios em oportunidades: A modernização tecnológica no setor de seguros

O setor de seguros movimentou R$ 388,03 bilhões no Brasil..

Continuar lendo
Transformação Digital em Bancos: Como superar os desafios dos sistemas legados

Transformação Digital em Bancos: Como superar os desafios dos sistemas legados

A transformação digital no setor bancário é uma necessidade para..

Continuar lendo

Cadastre-se na newsletter

Receba conteúdos exclusivos sobre transformação digital, IA, tendências tecnológicas e muito mais, diretamente no seu e-mail.

    Política de Privacidade

    Utilizamos Cookies para armazenar informações de como você usa o nosso site com o único objetivo de criar estatísticas e melhorar as suas funcionalidades.