Geolocalizador en Flutter

Es extremadamente común en aplicaciones como pago, mapas y comercio electrónico para acceder a la ubicación de los usuarios. El acceso a la ubicación también se usa mucho en el seguimiento de artículos. En este artículo, veremos lo siguiente: 

  • obtener el permiso
  • Acceder a la última ubicación del dispositivo
  • Acceder a la ubicación actual
  • Accede a actualizaciones continuas de ubicación

Este artículo se centra en la ubicación del usuario solo desde Android. 

Agregar la dependencia

Para usar el geolocalizador, primero lo instalaremos como una dependencia en el archivo pubspec.yaml . Para hacerlo, mencione geolocator en la sección de dependencias.

Add the dependency

Importar la dependencia

Dart

import 'package:geolocator/geolocator.dart';

Configuración

Antes de pasar a la parte de codificación, tenemos que hacer algunos ajustes.

1. En android/app/build.gradle configure compileSDKVersion en 31

2. Otorgue permiso al usuario para acceder a la ubicación del dispositivo en el archivo android/app/src/main/AndroidManifest.xml .

3. En android/gradle.properties establezca las siguientes propiedades: 

Implementación

Definamos la Posición en la clase de la que hablaremos a lo largo del artículo. La posición es una variable no anulable.

Dart

Position? position;

Solicitar permiso

Si la aplicación requiere permiso del usuario para acceder a la ubicación, usamos el método requestPermission() en Geolocator para que pueda realizar operaciones de ubicación.

Dart

LocationPermission permission = await Geolocator.requestPermission();

Verificar permiso

Para saber si los servicios de ubicación están habilitados o no, podemos invocar checkPermission() en Geolocator.

Dart

LocationPermission permission = await Geolocator.checkPermission();

Obtener ubicación actual

Vamos a crear una función getCurrentPosition() que llame al método getCurrentPosition() en Geolocator y devuelva la posición del dispositivo.

Dart

getCurrentPosition() async {
    position = await Geolocator.getCurrentPosition(
        desiredAccuracy: LocationAccuracy.high);
    return position;
  }

Producción:

Output

Cuando presionamos el botón GET, invoca getCurrentPosition() y devuelve la posición que proporciona la latitud y la longitud que mostramos en la pantalla.

Obtener última ubicación

Para obtener la última ubicación, usamos el método getLastKnownPosition(). Estamos definiendo el método getLastPosition() para obtener la última posición conocida dentro de él y luego devolverlo. La posición devuelta también indicará la longitud y latitud del dispositivo.

Dart

getLastPosition() async {
    position = await Geolocator.getLastKnownPosition();
    return position;
  }

Producción:

Acceda a actualizaciones continuas de ubicación

Para obtener actualizaciones continuas de ubicación, debemos suscribirnos al servicio Stream as: 

Dart

StreamSubscription<ServiceStatus> serviceStatusStream =
        Geolocator.getServiceStatusStream().listen((ServiceStatus status) {
      print(status);
    });

Podemos establecer la configuración de ubicación como la precisión que queremos y el filtro distante, dará la ubicación cada vez que el dispositivo mueva la distancia del filtro distante horizontalmente.  

Dart

final LocationSettings locationSettings = LocationSettings(accuracy: LocationAccuracy.best, distanceFilter: 0);

Luego, definimos una función getLocationUpdates() para invocar cuando queremos obtener las actualizaciones de ubicación.

Dart

getLocationUpdates() {
    final LocationSettings locationSettings =
        LocationSettings(accuracy: LocationAccuracy.best, distanceFilter: 0);
  
    StreamSubscription<ServiceStatus> serviceStatusStream =
        Geolocator.getServiceStatusStream().listen((ServiceStatus status) {
      print(status);
    });
  }

Producción:

La ubicación que estamos obteniendo es constante porque el dispositivo no se mueve. 

Publicación traducida automáticamente

Artículo escrito por rn540 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *