Alura > Cursos de Mobile > Cursos de Flutter > Conteúdos de Flutter > Primeiras aulas do curso Flutter: geolocalização e Google Maps

Flutter: geolocalização e Google Maps

Geolocalização e mapas - Introdução

Olá, meu nome é Matheus, sou instrutor da Alura e vou te acompanhar durante este curso de geolocalização e mapas.

Audiodescrição: Matheus Alberto se descreve como um homem branco. Tem olhos castanhos e cabelos curtos lisos de cor castanho escuro. Usa óculos de armação preta e camiseta preta. Ao fundo, estúdio com iluminação arroxeada. À direita, estante com decorações.

O que vamos desenvolver?

Vamos desenvolver um aplicativo para uma empresa que trabalha com distribuição de produtos. Este aplicativo terá duas telas: uma tela onde pediremos a permissão de usuário para acessar a localização do dispositivo e outra tela onde exibiremos um mapa.

Este mapa deve possuir algumas funcionalidades:

  1. Exibir o mapa pelo Google Maps;
  2. Mostrar a localização atual da pessoa usuária;
  3. Exibir alguns marcadores de pontos de interesse, por exemplo, os pontos de distribuição da própria empresa.
  4. Criar novos marcadores de pontos de interesse.

Assim, a pessoa que estiver utilizando o aplicativo para realizar entregas, por exemplo, pode segurar um ponto no mapa para marcar um novo ponto e atribuir uma identificação a ele.

Pré-requisitos

Para acompanhar este curso, é importante que você já tenha conhecimento de Flutter, saiba construir widgets e tenha noção de como criar componentes personalizados.

Também é necessário ter todo o ambiente Google configurado, pois precisaremos trabalhar com chave de API nas aplicações da Google. Se você ainda não criou uma conta Google, não gerou uma chave de acesso e não configurou as permissões de serviços, é importante pausar o vídeo e retornar à atividade de "Preparando o Ambiente" para que possamos trabalhar a seguir.

Geolocalização e mapas - Implementando mapa e pegando localização de usuário

Configuração Inicial do Google Cloud

Para conferir como trabalharemos dentro do nosso serviço da Google, vamos mostrar a tela do Google Cloud. Temos dois serviços importantes: o Maps JavaScript API, que precisa estar ativo, e o Maps SDK for Android, que também precisa estar ativo, com as devidas chaves criadas.

Integração do Google Maps Flutter

Voltando ao nosso aplicativo, na tela de mapa, temos apenas um widget chamado Map. Para inserir o mapa, utilizamos o plugin Google Maps Flutter. No navegador, acessamos a página do Pub.dev com o pacote Google Maps Flutter. Agora, no VSCode, instalamos esse pacote. Abrimos o terminal, aumentamos o zoom para melhor visualização e digitamos flutter pub add google_maps_flutter. Após a instalação do pacote, adicionamos a dependência.

Configuração da Chave de API

Ainda não estamos prontos para usar. Vamos consultar a documentação rapidamente. No Pub.dev, há informações sobre como começar. A primeira seção destaca a importância de ter o Google Maps SDK da plataforma já ativo. Descendo um pouco mais, encontramos a seção "specify your API key in the application manifest", que orienta sobre como inserir a chave de acesso no aplicativo.

Modificação do AndroidManifest.xml

Como estamos trabalhando com Android, utilizamos o exemplo de código fornecido para modificar o arquivo AndroidManifest.xml. O exemplo indica onde inserir a tag metadata dentro do arquivo, especificamente após a tag application. Copiamos as linhas necessárias e, no VSCode, abrimos o arquivo AndroidManifest.xml na pasta "Android", "app", "src", "main". Após a linha de fechamento da tag application, colamos a tag metadata e substituímos yourkeyhere pela nossa chave de API obtida no Google Cloud.

Implementação do Mapa no Aplicativo

Para rodar o mapa, voltamos à documentação do pacote Google Maps. Descendo, encontramos um exemplo de código importante, especialmente o que está dentro do Scaffold, que mostra como usar o widget Google Maps. O exemplo requer um InitialCameraPosition, que precisa de um CameraPosition com um target do tipo LatLng (Latitude e Longitude).

Obtenção de Localização Atual

No emulador, ao compartilhar a localização, o mapa carrega na posição definida. Para centralizar na localização atual, precisamos de permissões de localização. Utilizamos o plugin Geolocator para obter a localização do dispositivo. Antes de instalar, verificamos a documentação para entender as permissões necessárias: ACCESS_FINE_LOCATION e ACCESS_COARSE_LOCATION.

Gerenciamento de Permissões

Após o Android 12, existem dois tipos de permissão: a permissão que existe quando instalamos um aplicativo, que precisa estar preparada para o dispositivo, e a permissão em tempo de execução (Runtime), que é quando o aplicativo está aberto e funcionando. Precisamos pedir permissão duas vezes: uma no Android Manifest e outra manualmente no código, solicitando à pessoa usuária para usar as informações do dispositivo.

Uso do Permission Handler

No exemplo de código, há uma solicitação de permissão de localização. O próprio pacote tem isso, mas não recomendamos usar permissões embutidas em pacotes específicos. É importante trabalhar com o Permission Handler, que gerencia permissões e é atualizado conforme as especificações da Google e Apple. Vamos instalar o pacote permission_handler no VSCode, abrir o terminal e executar flutter pub add permission_handler. Após a instalação, voltamos ao navegador e verificamos como usar o pacote.

Ajustes Finais e Testes

No emulador, ao clicar no botão de localização, deve aparecer um popup pedindo permissão para usar a localização. Podemos permitir a localização exata ou aproximada, e escolher se queremos usar a permissão durante o uso do app ou apenas uma vez. Por questões didáticas, é interessante permitir apenas uma vez para evitar reinstalações.

Criação de Marcadores no Mapa

Para adicionar marcadores no mapa, usamos a propriedade markers do widget GoogleMap, que recebe um Set de Marker. Criamos marcadores para a Alura e a FIAP, com markerId, position e infoWindow com title e snippet.

Conclusão e Próximos Passos

Com essas funcionalidades, podemos marcar clientes, sedes ou locais de entrega no mapa. Incentivamos a experimentação e personalização do aplicativo, explorando as documentações dos pacotes para criar versões que atendam às necessidades específicas.

Esperamos que tenham gostado do curso sobre recursos nativos, geolocalização e mapas. Nos vemos em um próximo momento. Até breve!

Sobre o curso Flutter: geolocalização e Google Maps

O curso Flutter: geolocalização e Google Maps possui 111 minutos de vídeos, em um total de 9 atividades. Gostou? Conheça nossos outros cursos de Flutter em Mobile, ou leia nossos artigos de Mobile.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Flutter acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas