geolocator_android3.1.6版的默认方法通道实现已被平台特定实现所取代

问题是 geolocator_android 版本 6 中的默认方法通道实现 3.1. 已被平台特定的实现所取代。但是,由于任务在没有 Flutter 引擎的情况下在单独的隔离中运行,因此特定于平台的实现(在本例中为 geolocator_android)没有注册到平台接口(@98​​​​7654325@),导致 MissingPluginException 。

要使用 3.1.6 或更高版本,请务必在运行 executeTask 时注册特定于平台的实现。

void callbackDispatcher() {
  Workmanager().executeTask((task, inputData) async {
   if (defaultTargetPlatform == TargetPlatform.android) {
     GeolocatorAndroid.registerWith();

图片[1]-geolocator_android3.1.6版的默认方法通道实现已被平台特定实现所取代-唐朝资源网

} else if (defaultTargetPlatform == TargetPlatform.iOS || defaultTargetPlatform == TargetPlatform.macOS) { GeolocatorApple.registerWith(); } else if (defaultTargetPlatform == TargetPlatform.linux) { GeolocatorLinux.registerWith(); } await Geolocator.checkPermission(); await Geolocator.getCurrentPosition();

图片[2]-geolocator_android3.1.6版的默认方法通道实现已被平台特定实现所取代-唐朝资源网

}); }

或者,如果你正在运行 Flutter 2.11+,你可以使用新的 DartPluginRegistrant.ensureInitialized() 方法来确保所有包都正确注册:

图片[3]-geolocator_android3.1.6版的默认方法通道实现已被平台特定实现所取代-唐朝资源网

void callbackDispatcher() {
  Workmanager().executeTask((task, inputData) async {
    DartPluginRegistrant.ensureInitialized();

图片[4]-geolocator_android3.1.6版的默认方法通道实现已被平台特定实现所取代-唐朝资源网

await Geolocator.checkPermission(); await Geolocator.getCurrentPosition(); }); }

更多信息可以在 和 找到。

© 版权声明
THE END
喜欢就支持一下吧
点赞159 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片