gpt4 book ai didi

Flutter workmanager 插件在运行任务时无法与任何其他插件一起使用

转载 作者:行者123 更新时间:2023-12-02 11:16:59 36 4
gpt4 key购买 nike

在初始化工作管理器并创建任一任务后,如果我们在任务执行中使用任何插件,则无法识别并抛出如下错误
MissingPluginException(在 channel lyokone/location 上找不到方法 getLocation 的实现)

实际代码:

Workmanager.executeTask((task, inputData) async {
Location locationObject = Location();
locationObject.getLocation();
print(locationObject);
return Future.value(true);
}

基本上,工作管理器任务中使用的任何其他插件似乎都无法识别。

我错过了什么,我需要重新注册我的所有插件吗?
I/flutter (16120): Location permission has error I/flutter (16120): MissingPluginException(No implementation found for method serviceEnabled on channel lyokone/location)

最佳答案

如果想从 WorkManager executeTask 内部使用其他插件;需要创建自定义应用程序类,并需要注册其他插件。如果 WorkManager 插件本身需要在执行任务中使用,该插件也需要注册。此外,需要在 AndroidManifest.xml 文件中指定这个新创建的自定义应用程序。
插件的 issues link 中提到了这一点。因为它不能完全从插件本身处理。

import io.flutter.app.FlutterApplication;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugins.androidalarmmanager.AlarmService;
import io.flutter.plugins.androidalarmmanager.AndroidAlarmManagerPlugin;
import com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin;
import io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin;
import io.flutter.plugins.firebase.cloudfirestore.CloudFirestorePlugin;
import be.tramckrijte.workmanager.WorkmanagerPlugin;

public class CustomApplication extends FlutterApplication implements PluginRegistry.PluginRegistrantCallback {
@Override
public void onCreate() {
super.onCreate();
WorkmanagerPlugin.setPluginRegistrantCallback(this);

}

@Override
public void registerWith(PluginRegistry registry) {
// GeneratedPluginRegistrant.registerWith(registry);

//add AndroidAlarmManagerPlugin plugin register if you work with arlarm
AndroidAlarmManagerPlugin.registerWith(registry.registrarFor("io.flutter.plugins.androidalarmmanager.AndroidAlarmManagerPlugin"));

//add SharedPreferencesPlugin plugin register if you work with share preferences
SharedPreferencesPlugin.registerWith(registry.registrarFor("io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin"));

// something else...

FlutterLocalNotificationsPlugin.registerWith(registry.registrarFor("com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin"));

CloudFirestorePlugin.registerWith(registry.registrarFor("io.flutter.plugins.firebase.cloudfirestore.CloudFirestorePlugin"));

WorkmanagerPlugin.registerWith(registry.registrarFor("be.tramckrijte.workmanager.WorkmanagerPlugin"));
}
}

新创建的CustomApplication类需要在android manifest文件的application标签中指定
<application
android:name="packagename.CustomApplication"

Android 特定文件位于 Android 项目文件夹中,请查看以下屏幕截图。

enter image description here

关于Flutter workmanager 插件在运行任务时无法与任何其他插件一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58194516/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com