flutter - 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
我发现了一件奇怪的事情。如果位置服务停止/未启用,那么我将得到空值。如果我手动启用位置,那么它就会开始给我位置。
解决方案
我认为这与您正在使用的软件包(地理定位器)有关,当我在youtube 上听讲座时,我也遇到了同样的问题
所以我找了一些其他流行的包来获取位置 ,它的文档非常简单。
推荐阅读
- python - 在python中组合两个csv - 如果在较新的csv中存在则更新
- .net - 如何正确访问 .cshtml 中条件的 ViewModel 属性
- python - sqlalchemy.orm.scoping.scoped_session 代理能力是如何实现的?
- monaco-editor - 在 monaco 编辑器中关闭 Completion Modal 的命令 (editor.action)
- java - 如何在 Java/Hibernate 中获取实体类的列名称字符串
- numpy - numpy / 线性代数 - 快速 16 位直方图
- scala - spark scala中的列比较
- node.js - AWS lambda 在使用 MongoClient 时获得“未授权执行操作”,与 mongoose 一起工作正常,从 shell 运行命令时工作正常
- c# - 访问 NHibernate ActionQueue 以检查待处理命令列表
- ios - 打印命令在 Xcode 的调试区域中显示为绿色