我已经在geolocator存储库https://github.com/BaseflowIT/flutter-geolocator/issues/199
上发布了一个问题这需要geolocator软件包不检索位置。他们最近发布了新版本3.0.0,此后我只有余波。
我使用的是正确的依赖项:
dependencies:
geolocator: '^3.0.0'
targetSdkVersion 28 and compileSdkVersion 28
Flutter医生给了我
[✓] Flutter (Channel stable, v1.0.0, on Mac OS X 10.14.3 18D109, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK 28.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.1)
[✓] Android Studio (version 3.2)
[✓] IntelliJ IDEA Community Edition (version 2018.2.5)
[✓] Connected device (1 available)
• No issues found!
一旦我调用await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
,代码就不会返回任何内容,并且在终端中显示以下输出:
I / DynamiteModule(4233):考虑本地模块 com.google.android.gms.maps_dynamite:0和远程模块 com.google.android.gms.maps_dynamite:221 I / DynamiteModule(4233): com.google.android.gms.maps_dynamite的选定远程版本, 版本> = 221 V / DynamiteModule(4233):炸药加载程序版本> = 2, 使用loadModule2NoCrashUtils W / System(4233):引用了ClassLoader 未知路径:W / System(4233):ClassLoader引用的未知路径: /data/user_de/0/com.google.android.gms/app_chimera/m/00000030/n/armeabi-v7a W / System(4233):ClassLoader引用的未知路径: /data/user_de/0/com.google.android.gms/app_chimera/m/00000030/n/armeabi I / Google Maps Android API(4233):Google Play服务客户端版本: 12451000 I / Google Maps Android API(4233):Google Play服务 软件包版本:15090018 W / DynamiteModule(4233):本地模块 com.google.android.gms.google的描述符类不能证明 找到了。 I / DynamiteModule(4233):考虑本地模块 com.google.android.gms.googlecertificates:0和远程模块 com.google.android.gms.google证书:4 I / DynamiteModule(4233): com.google.android.gms.googlecertificates的选定远程版本, 版本> = 4 W /系统(4233):ClassLoader引用的未知路径: /data/user_de/0/com.google.android.gms/app_chimera/m/0000002f/n/armeabi-v7a W / System(4233):ClassLoader引用的未知路径: /data/user_de/0/com.goo`gle.android.gms/app_chimera/m/0000002f/n/armeabi
我花了很多时间。我是新手,但我知道我可能会错过一件事以使其正常工作。
答案 0 :(得分:1)
嘿,@ wagnerdelima面临同样的挑战,我可以通过以下方法解决:
将targetSdkVersion 28和compileSdkVersion 28更改为targetSdkVersion 27和compileSdkVersion 27,并更改为geolocator:'^ 3.0.0'到geolocator:^ 2.1.1,如下所示:
依赖性: 扑: SDK:颤振 地理位置:^ 2.1.1 Permission_handler:“ 2.1.2” google_api_availability:“ 1.0.4”
这是插入符号^的结果,它采用的是最新的google_api_availability,已迁移到android x。
祝一切顺利!
答案 1 :(得分:1)
在iOS上,您需要将以下条目添加到Info.plist中 文件(位于ios / Runner下)以访问设备的 位置。只需打开您的Info.plist文件并添加以下内容:
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to location when open.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>This app needs access to location when in the background.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>This app needs access to location when open and in the background.</string>
答案 2 :(得分:0)
我面临着同样的问题。但是我的应用程序在添加此功能后开始运行。
[ Geolocator geolocator = Geolocator()..forceAndroidLocationManager = true; ]
希望它会起作用。
Future<void> getCurrentLocation() async {
try {
Geolocator geolocator = Geolocator()..forceAndroidLocationManager = true;
Position position = await Geolocator().getCurrentPosition(
desiredAccuracy: LocationAccuracy.best,
);
return position;
} catch (err) {
print(err.message);
}
}
祝一切顺利。
答案 3 :(得分:0)
首先,请检查您使用的设备和Flutter版本。 我只有一个设备,即Google的Nexus 6P和Flutter版本1.9.1 + hotfix.6,遇到相同的问题。问题出在“ geolocator”软件包上,因为所有其他设备都可以正常工作。
我推荐new_geolocation。到目前为止,它解决了所有设备的问题。
第二,我如何使用它,自述文件here并没有帮助,因此在Github here上进行了示例项目,并使用了与该示例相同的方法来获得准确的结果。
我希望它会有所帮助。
答案 4 :(得分:0)
我在这个问题上苦苦挣扎了大约2天。在那之后,我发现了这个(Mac):
答案 5 :(得分:0)
我遇到了同样的问题现在可以了,我刚刚将 forceAndroidLocationManager: true 添加到 Geolocator.getCurrentPosition。
Position position = await
Geolocator.getCurrentPosition(forceAndroidLocationManager: true,
desiredAccuracy: LocationAccuracy.lowest);