Flutter定位程序包无法在后台运行

问题描述

我正在使用Flutter Location软件包来跟踪用户位置。它按预期工作。 当我最小化应用程序时,问题就来了,它停止提供位置数据。

即使应用程序最小化,我也想继续获取位置数据。

这就是我获取用户位置的方式。

Future<void> _listenLocation(store) async {
    print('listen 1');
    location.changeSettings(
        accuracy: LocationAccuracy.high,distanceFilter: 20,interval: 5000);

    _locationSubscription =
        location.onLocationChanged.handleError((dynamic err) {
      setState(() {
        _error = err.code;
      });
      _locationSubscription.cancel();
    }).listen((LocationData currentLocation) {
      print('listen 2');
      setState(() {
        print('listen 3');
        _error = null;

        _location = currentLocation;


        print('_location');
        print(_location.speed);
        print(currentLocation.speed);


      });
    });

  }

我是新手,请帮忙。

解决方法

在某些Android版本上,常规位置软件包仍然有效。但是,在其他应用程序上,当应用程序在后台(不是最前端的应用程序)处于后台时,它将停止所有代码执行。

我对background_location软件包有不好的经验。 carp_background_location软件包对我来说似乎非常合适。它建立在更复杂的background_locator程序包的基础上,该程序包也可能运行良好。

我建议使用carp_background_location软件包。实现起来很简单。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...