Как дросселировать onLocationChanged в flutter

#flutter #dart #geolocation #location

#flutter #dart #геолокация #Расположение

Вопрос:

Я хочу обновлять местоположение пользователя каждые 10 минут. onLocationChanged Работает нормально, даже когда приложение работает в фоновом режиме. Тем не менее, он продолжает выбрасывать данные о местоположении при изменении местоположения. Я хочу, чтобы он запустил метод _getCurrentLocationtoServer() через 10 минут.

 location.onLocationChanged.listen((LocationData cLoc) {
      currentLocation = cLoc;
      _getCurrentLocationtoServer();
    });

void _getCurrentLocationtoServer() async{
//code to send to server
}
  

Я использую https://pub.dev/packages/location посылка.

Ответ №1:

Не вызывайте _getCurrentLocationtoServer() внутри onLocationChanged . Просто назначьте значение currentLocation . Теперь создайте новый

 Timer.periodic(Duration(minutes: 10), () => _getCurrentLocationtoServer());
  

Это выполняется периодически и отправляет значение currentLocation на сервер каждые 10 минут. Убедитесь, что значение currentLocation не равно null, прежде чем отправлять его на сервер.

Ответ №2:

Вы можете изменить интервал location вызова by changeSettings и установить правильный интервал:

interval установит желаемый интервал для активных обновлений местоположения в миллисекундах (влияет только на Android).

 location.changeSettings(interval: 1000 * 60 * 10); // 10 mins