【发布时间】:2019-12-21 13:43:41
【问题描述】:
我无法设置完成某些功能的日常任务。我已经设法让 android_alarm_manager 工作,目前已将其设置为每分钟在日志中打印一条消息以进行测试,但每天完成后都会设置。以下是我的代码:
void printHello() async{
final DateTime now = DateTime.now();
final int isolateId = Isolate.current.hashCode;
print("[$now] Hello, world! isolate=${isolateId} function='$printHello'");
int myValue = await getData();
print("Test Value: $myValue");
}
Future<int> getData() async{
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
return sharedPreferences.getInt("testInt");
}
main() async {
WidgetsFlutterBinding.ensureInitialized();
final int helloAlarmID = 0;
await AndroidAlarmManager.initialize();
runApp(MyApp());
await AndroidAlarmManager.periodic(const Duration(minutes: 1), helloAlarmID, printHello);
}
当警报触发时,我会收到示例中的正常打印消息和类似这样的错误
I/flutter (22910): [2019-12-21 13:34:09.526343] Hello, world! isolate=957159586 function='Closure: () => void from Function 'printHello': static.'
E/flutter (22910): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/shared_preferences)
E/flutter (22910): #0 getData (package:my_jungle_2/main.dart:34:41)
E/flutter (22910): <asynchronous suspension>
E/flutter (22910): #1 printHello (package:my_jungle_2/main.dart:28:23)
E/flutter (22910): #2 _alarmManagerCallbackDispatcher.<anonymous closure> (package:android_alarm_manager/android_alarm_manager.dart:43:14)
E/flutter (22910): #3 MethodChannel._handleAsMethodCall (package:flutter/src/services/platform_channel.dart:402:55)
E/flutter (22910): #4 MethodChannel.setMethodCallHandler.<anonymous closure> (package:flutter/src/services/platform_channel.dart:370:54)
E/flutter (22910): #5 _DefaultBinaryMessenger.handlePlatformMessage (package:flutter/src/services/binding.dart:200:33)
E/flutter (22910): #6 _invoke3.<anonymous closure> (dart:ui/hooks.dart:303:15)
E/flutter (22910): #7 _rootRun (dart:async/zone.dart:1126:13)
E/flutter (22910): #8 _CustomZone.run (dart:async/zone.dart:1023:19)
E/flutter (22910): #9 _CustomZone.runGuarded (dart:async/zone.dart:925:7)
E/flutter (22910): #10 _invoke3 (dart:ui/hooks.dart:302:10)
E/flutter (22910): #11 _dispatchPlatformMessage (dart:ui/hooks.dart:162:5)
我仍然是 Android 和 Flutter 的新手,并且正在努力理解如何为警报管理器提供我需要它使用的插件。
您甚至可以提供诸如共享首选项之类的警报管理器插件吗?
提前感谢您为我解决此问题提供的任何帮助。如果我不理解警报管理器是如何正常工作的,请致歉。
【问题讨论】:
-
在使用
shared_preferences依赖项保存pubspec.yml后,您是否运行了flutter pub get? -
@Benjamin 我有。我可以在我的应用程序的其他地方使用
shared_preferences。只是不在警报管理器功能中。 -
@MichaelJohnston 你有什么解决方案吗,因为我遇到了同样的问题
-
@DeepakRana 我没有解决这个问题,不,因为最终只是使用应用程序的正常通知,而不是设置每日警报管理器检查。
标签: android flutter dart alarmmanager android-alarms