我正在尝试对患者的用药时间进行每日剩余,我正在使用flatter_local_notifications,效果很好。这是我的功能,我想让它每天重复,
void scheduleAlarm() async {
var androidPlatformChannelSpecifics = AndroidNotificationDetails(
'alarm_notif',
'alarm_notif',
'Channel for Alarm notification',
icon: 'codex_logo',
sound: RawResourceAndroidNotificationSound('notification_sound'),
largeIcon: DrawableResourceAndroidBitmap('drug'),
);
tz.initializeTimeZones();
tz.setLocalLocation(tz.getLocation('America/Detroit'));
var iOSPlatformChannelSpecifics = IOSNotificationDetails(
sound: 'notification_sound.wav',
presentAlert: true,
presentBadge: true,
presentSound: true);
var platformChannelSpecifics = NotificationDetails(
android: androidPlatformChannelSpecifics,
iOS: iOSPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.zonedSchedule(
0,
'Panadol',
'Don't forget to take your medicine 2:00 AM',
tz.TZDateTime.now(tz.local).add(Duration(seconds: 5)),
platformChannelSpecifics,
androidAllowWhileIdle: true,
);
}
我想更改这条线,这样我就可以通过从TimePicker得到的一系列时间,用这种格式'2:00AM'
tz.TZDateTime.now(tz.local).add(Duration(seconds: 5)),
使用现有的代码,您可以使用这样的cron模块来安排每天的通知。
cron.schedule(Schedule.parse('0 2 */1 * *'), () async {
scheduleAlarm();
print('Run scheduled notification');
});
请注意,您的通知延迟了5秒,但请注意,zonedSchedule()
也需要一个未来的日期才能执行。
如果您不熟悉cron表达式,可以使用crontab.guru来帮助您。
注意:Cron需要运行应用程序才能工作。