scheduleAlarmNotif method
Schedules notification at the given time.
Implementation
Future<void> scheduleAlarmNotif({
required int id,
required DateTime dateTime,
required String title,
required String body,
}) async {
const iOSPlatformChannelSpecifics = DarwinNotificationDetails(
presentSound: false,
presentAlert: false,
presentBadge: false,
);
const androidPlatformChannelSpecifics = AndroidNotificationDetails(
'alarm',
'alarm_package',
channelDescription: 'Alarm package',
importance: Importance.max,
priority: Priority.max,
enableLights: true,
fullScreenIntent: true,
playSound: false,
category: AndroidNotificationCategory.alarm,
visibility: NotificationVisibility.public,
actions: <AndroidNotificationAction>[
AndroidNotificationAction(alarmStopActionId, 'Stop',
showsUserInterface: true, cancelNotification: true),
AndroidNotificationAction(alarmSnoozeActionId, 'Snooze',
showsUserInterface: true, cancelNotification: true),
],
);
const platformChannelSpecifics = NotificationDetails(
iOS: iOSPlatformChannelSpecifics,
android: androidPlatformChannelSpecifics,
);
final zdt = nextInstanceOfTime(dateTime);
final hasPermission = await requestPermission();
if (!hasPermission) {
debugPrint('[Alarm] Notification permission not granted');
return;
}
try {
await localNotif.zonedSchedule(
id,
title,
body,
zdt,
platformChannelSpecifics,
uiLocalNotificationDateInterpretation:
UILocalNotificationDateInterpretation.absoluteTime,
);
debugPrint(
'[Alarm] Notification with id $id scheduled successfuly at $zdt');
} catch (e) {
debugPrint('[Alarm] Schedule notification with id $id error: $e');
}
}