正如标题所说,我正在使用两个插件,workmanager和shared preferences。其中,workmanager的部分按照其预期运作,而在shared preferences中出现了错误。
以下是与workmanager插件相关的代码部分:
这是我处理共享首选项的代码的一部分:
以下错误在注释指定的行抛出:
我尝试了另一个stackoverflow问题中的方法(先前代码示例中的第二种方法),然后就没有抛出错误,但正如那个人所说,它不能持久化数据,因此毫无用处。我还尝试了他建议的其他事情(编辑
有人知道我该怎么做来解决这个问题吗?
以下是与workmanager插件相关的代码部分:
void callbackDispatcher() {
Workmanager().executeTask((taskName, inputData) async {
switch (taskName) {
case 'midnight_task':
try {
await SharedPrefsHelper().initSharedPrefsInstance(); //THIS line causes the error
await PedometerService.midnightTask();
print('workmanager_service.dart: looks like midnightTask got successfully executed :D');
} catch (e) {
print('workmanager_service.dart midnightTask error: $e');
}
break;
default:
print('workmanager_service.dart callbackDispatcher(): unhandled taskName: $taskName');
}
return Future.value(true); // "The task is successful"
});
}
这是我处理共享首选项的代码的一部分:
SharedPreferences _prefs;
Future<void> initSharedPrefsInstance() async {
print('initSharedPrefsInstance()');
if (_prefs == null) _prefs = await SharedPreferences.getInstance(); //the error gets thrown here
print('shared prefs initialized()');
}
//this will NOT persist data
Future<void> initSharedPrefsInstanceMock() async {
print('initSharedPrefsInstanceMock()');
SharedPreferences.setMockInitialValues({}); //<- this line: only difference to above method
if (_prefs == null) _prefs = await SharedPreferences.getInstance();
print('initSharedPrefsInstanceMock: shared prefs initialized()');
}
以下错误在注释指定的行抛出:
workmanager_service.dart midnightTask error: MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/shared_preferences)
。我尝试了另一个stackoverflow问题中的方法(先前代码示例中的第二种方法),然后就没有抛出错误,但正如那个人所说,它不能持久化数据,因此毫无用处。我还尝试了他建议的其他事情(编辑
/android/app/build.gradle
),以及其他人建议的许多其他事情,但都没有解决我的问题。有人知道我该怎么做来解决这个问题吗?