我有以下情况。我有一个每天触发一次的AlarmManager。在此警报中,我比较两个值,如果这些值相同,则会发送通知。因此,我创建了特定于平台的代码(仅限Android)来发送通知。
问题:我只能在AlarmManager之外调用方法。这意味着,如果我在没有AlarmManager的情况下将方法称为“正常”,则一切都会按预期进行。否则它将引发如下错误:
22:25:30.545 16 info flutter.tools E/flutter ( 5255): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: MissingPluginException(No implementation found for method test on channel reminder_channel)
使用AlarmManager的代码:
main.dart
final int dailyAlarmID = 0;
await AndroidAlarmManager.initialize();
runApp(...);
await AndroidAlarmManager.oneShot(
Duration(seconds: 15), dailyAlarmID, testMethod);
}
testMethod:
void testMethod() async {
SharedPreferences preferences = await SharedPreferences.getInstance();
bool testBool = preferences.getBool("darkTheme");
print("testBool: $testBool");
final MethodChannel platform = const MethodChannel("reminder_channel");
final testInt = await platform.invokeMethod("test");
print("testInt: $testInt");
}
顺便说一句,我的方法返回一个Int,即5。这仅用于测试。从共享首选项中读取testBool变量,并在两个变体中正确显示它们。
输出:
22:25:30.535 15 info flutter.tools I/flutter ( 5255): testBool: true
22:25:30.545 16 info flutter.tools E/flutter ( 5255): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: MissingPluginException(No implementation found for method test on channel reminder_channel)
没有AlarmManager:
main.dart:
testMethod();
我只是在主方法的最后调用方法。没什么特别的。
输出:
22:41:58.054 10 info flutter.tools I/flutter ( 5564): testBool: true
22:41:58.633 12 info flutter.tools I/flutter ( 5564): testInt: 5
感谢您的帮助。
答案 0 :(得分:0)