【问题标题】:Flutter: E/location_permissions: result object is null in Geolocator pluginFlutter:E / location_permissions:Geolocator插件中的结果对象为空
【发布时间】:2020-08-11 19:22:30
【问题描述】:

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

Pubspecs.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

Android 清单

    <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() 时。它正在显示对话框以允许在 App 中使用三个选项访问位置。

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

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

【问题讨论】:

  • 正如您在编辑 2 中指出的那样,即使您的应用具有可用的位置权限并且您的设备位置已关闭;你不会得到任何位置数据,你会得到空数据(这就是发生的事情)。该权限将询问一次(除非您在 Android 中选择拒绝)。我认为冻结应用程序与始终允许无关,这可能是您在那之后正在做的其他事情。 (请贴出按钮代码和使用地点_locationMessage
  • 感谢 cmets Midhun。我发现如果位置服务停止,它将返回 null 的原因。首先需要启用它,然后它才能工作。现在,我正在尝试查找如何使用此 null 值向用户显示启用位置服务的提示。

标签: flutter dart flutter-plugin


【解决方案1】:

我认为这与您正在使用的包(地理定位器)有关, 当我关注lecture from youtube时,我也遇到了同样的问题

所以我去找了一些其他流行的包来获得location 而且它的文档非常简单。

【讨论】:

    猜你喜欢
    • 2022-07-07
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    相关资源
    最近更新 更多