Objetivo
Implementar a seleção de localização do comércio no frontend usando uma tela com mapa interativo, permitindo que o usuário escolha com precisão o ponto do estabelecimento.
Essa funcionalidade deve facilitar o cadastro/edição de comércios, evitando que o usuário precise digitar manualmente todo o endereço e permitindo que o backend receba coordenadas confiáveis para uso em mapas, rotas e localização.
Contexto
O backend já foi preparado para armazenar dados de localização dos comércios, incluindo:
- rua/logradouro;
- número;
- bairro;
- cidade;
- estado;
- CEP;
- país;
- latitude;
- longitude.
Também retorna, para os comércios, campos derivados como:
formattedAddress;
mapLinks.googleMaps;
mapLinks.waze.
A ideia desta issue é implementar a parte visual no app Flutter, permitindo que o usuário selecione a latitude/longitude em um mapa.
Pacotes sugeridos
Sugestões de pacotes Flutter:
google_maps_flutter: para exibir o mapa. O pacote fornece um widget de Google Maps para Flutter, mas exige chave da Google Maps Platform e ativação dos SDKs necessários.
geolocator: para obter a localização atual do dispositivo e centralizar inicialmente o mapa. O pacote permite obter localização atual, última localização conhecida e verificar permissões/serviços de localização.
url_launcher: para abrir links externos de mapa, se necessário, como Google Maps ou Waze.
Referências:
google_maps_flutter: plugin oficial para integrar Google Maps em apps Flutter. :contentReference[oaicite:0]{index=0}
geolocator: plugin de geolocalização com suporte a localização atual e permissões. :contentReference[oaicite:1]{index=1}
url_launcher: pacote para abrir URLs externas no dispositivo. :contentReference[oaicite:2]{index=2}
Fluxo esperado
- Usuário acessa a tela de cadastro ou edição de comércio.
- Na seção de localização, toca em
Selecionar no mapa.
- O app abre uma tela de mapa.
- O mapa tenta iniciar na localização atual do dispositivo.
- Caso a permissão de localização seja negada, usar uma localização padrão, por exemplo Campo Mourão/PR.
- O usuário ajusta o ponto do estabelecimento no mapa.
- O usuário confirma a localização.
- O app salva a latitude e longitude selecionadas.
- O usuário pode preencher/corrigir manualmente os campos de endereço.
- Ao salvar o comércio, o frontend envia os dados para o backend.
Sugestão de interação no mapa
Preferencialmente, usar o padrão de pin fixo no centro da tela.
Nesse modelo:
- o mapa se move;
- o pin permanece fixo no centro;
- ao confirmar, o app pega a coordenada central atual do mapa.
Esse padrão costuma ser mais confortável no celular do que arrastar um marcador pequeno com o dedo.
Exemplo visual conceitual:
┌─────────────────────────┐
│ │
│ 📍 │
│ │
│ mapa se move │
│ │
└─────────────────────────┘
[Usar minha localização atual]
[Confirmar localização]
Objetivo
Implementar a seleção de localização do comércio no frontend usando uma tela com mapa interativo, permitindo que o usuário escolha com precisão o ponto do estabelecimento.
Essa funcionalidade deve facilitar o cadastro/edição de comércios, evitando que o usuário precise digitar manualmente todo o endereço e permitindo que o backend receba coordenadas confiáveis para uso em mapas, rotas e localização.
Contexto
O backend já foi preparado para armazenar dados de localização dos comércios, incluindo:
Também retorna, para os comércios, campos derivados como:
formattedAddress;mapLinks.googleMaps;mapLinks.waze.A ideia desta issue é implementar a parte visual no app Flutter, permitindo que o usuário selecione a latitude/longitude em um mapa.
Pacotes sugeridos
Sugestões de pacotes Flutter:
google_maps_flutter: para exibir o mapa. O pacote fornece um widget de Google Maps para Flutter, mas exige chave da Google Maps Platform e ativação dos SDKs necessários.geolocator: para obter a localização atual do dispositivo e centralizar inicialmente o mapa. O pacote permite obter localização atual, última localização conhecida e verificar permissões/serviços de localização.url_launcher: para abrir links externos de mapa, se necessário, como Google Maps ou Waze.Referências:
google_maps_flutter: plugin oficial para integrar Google Maps em apps Flutter. :contentReference[oaicite:0]{index=0}geolocator: plugin de geolocalização com suporte a localização atual e permissões. :contentReference[oaicite:1]{index=1}url_launcher: pacote para abrir URLs externas no dispositivo. :contentReference[oaicite:2]{index=2}Fluxo esperado
Selecionar no mapa.Sugestão de interação no mapa
Preferencialmente, usar o padrão de pin fixo no centro da tela.
Nesse modelo:
Esse padrão costuma ser mais confortável no celular do que arrastar um marcador pequeno com o dedo.
Exemplo visual conceitual: