设备上的位置服务被禁用[Flutter geolocator v6.1.4]

问题描述 投票:0回答:2

当我尝试获取当前位置时,我总是收到该消息。我正在真实设备上运行我的应用程序。我按照此处的文档说明进行操作地理定位器插件。首先它获取位置,然后退出应用程序并再次启动它后,它说

设备上的定位服务已禁用

为什么即使我已经启用了定位服务,我仍然收到该错误?

class LocationController extends GetxController{

   var position = Position().obs;
   var lat = 0.00.obs;
   var long = 0.00.obs;
 Future getLocation() async {
   try{

       position.value = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);

       lat.value = position.value.latitude;
       long.value = position.value.longitude;
     } catch (e){
       print(e);
     }
  }
}

打电话...

locationController.getLocation();

android flutter dart geolocation
2个回答
4
投票

您很可能给出了位置“

permission
”,但服务本身(GPS 服务)已禁用。

需要注意的重要一点是权限与启用的服务不同。您的位置权限可能已打开,但

GPS
可能已关闭。

此时您会收到此错误日志。 您可以使用 Geolocator 插件首先检查 locationService 的状态

await Geolocator.isLocationServiceEnabled();

如果此布尔值为 false,您可以请求打开 GPS 服务

await Geolocator.openLocationSettings(); 

3
投票

下载并导入插件

地理定位器地理编码

import 'package:geocoding/geocoding.dart';
import 'package:geolocator/geolocator.dart';

在你的AndroidManifest中添加权限

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

初始化变量

Position _currentPosition;
String _currentAddress = "";

当前位置功能

_getCurrentLocation() async {

    await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.best)
    .then((Position position) {
  setState(() {
   //Pass the lat and long to the function
    _getAddressFromLatLng(position.latitude, position.longitude);

  });
}).catchError((e) {
  print(e);
});
  }

_从LatLng获取地址

 _getAddressFromLatLng(double latitude, double longitude) async {
    try {
      List<Placemark> p = await placemarkFromCoordinates(latitude, longitude);

      Placemark place = p[0];

      setState(() {
        _currentAddress = "${place.locality}";
        print(_currentAddress);       
    
      });
    } catch (e) {
      print(e);
    }
  }

如果出现上述问题只需运行

flutter clean
,卸载应用程序然后重新启动手机并再次运行项目

© www.soinside.com 2019 - 2024. All rights reserved.