首页 > 解决方案 > Flutter:E / location_permissions:Geolocator插件中的结果对象为空

问题描述

我在 Flutter Project 中使用 Geolocator 插件。我已经添加了它 Pubspecs.yaml 文件还在 AndroidManifest 文件中添加了权限。

发布规范.yaml

dependencies:
  http: ^0.12.0
  flutter:
    sdk: flutter
  shimmer: ^1.0.1
  font_awesome_flutter: ^8.8.1
  geocoder: ^0.2.1
  geolocator: ^5.3.1

安卓清单

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

我正在使用 SDK 28 - compileSdkVersion 28

这是位置访问的代码。

String _locationMessage = ""; 

  void _getCurrentLocation() async {
    print('location');
    final position = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
    print(position);

    setState(() {
      _locationMessage = "${position.latitude}, ${position.longitude}";
    });

  }

当我在 Button Pressed 上调用 _getCurrentLocation() 时。它显示对话框以允许在应用程序中使用三个选项进行位置访问。

Allow all the time
Keep While-In-Use Access
Keep and Don't Ask Again

选择 Keep While-In-Use Access 后,它在调试控制台中给出以下消息。

E/location_permissions( 7592): Flutter result object is null.

我究竟做错了什么?

另外,我想知道当我们尝试访问位置时它会一直询问还是只询问一次?

编辑

如果我一直选择允许,那么我的应用程序将停止响应。我的意思是如果按下按钮没有任何反应。我还需要从手机上卸载它并再次运行它,然后它开始提示许可。

编辑 2

我发现了一件奇怪的事情。如果位置服务停止/未启用,那么我将得到空值。如果我手动启用位置,那么它就会开始给我位置。

标签: flutterdartflutter-plugin

解决方案


我认为这与您正在使用的软件包(地理定位器)有关,当我在youtube 上听讲座时,我也遇到了同样的问题

所以我找了一些其他流行的包来获取位置 ,它的文档非常简单。


推荐阅读