scheduleAlarmNotif method
Schedules notification at the given dateTime
.
Implementation
Future<void> scheduleAlarmNotif({
required int id,
required DateTime dateTime,
required String title,
required String body,
}) async {
const iOSPlatformChannelSpecifics = DarwinNotificationDetails(
presentAlert: false,
presentBadge: false,
presentSound: false,
);
const androidPlatformChannelSpecifics = AndroidNotificationDetails(
'alarm',
'alarm_plugin',
channelDescription: 'Alarm plugin',
importance: Importance.max,
priority: Priority.max,
playSound: false,
enableLights: true,
);
const platformChannelSpecifics = NotificationDetails(
android: androidPlatformChannelSpecifics,
iOS: iOSPlatformChannelSpecifics,
);
final zdt = nextInstanceOfTime(dateTime);
final hasPermission = await requestPermission();
if (!hasPermission) {
alarmPrint('Notification permission not granted');
return;
}
try {
await localNotif.zonedSchedule(
id,
title,
body,
tz.TZDateTime.from(zdt.toUtc(), tz.UTC),
platformChannelSpecifics,
androidScheduleMode: AndroidScheduleMode.exactAllowWhileIdle,
uiLocalNotificationDateInterpretation:
UILocalNotificationDateInterpretation.absoluteTime,
);
alarmPrint(
'Notification with id $id scheduled successfuly at $zdt (GMT - Zulu time)',
);
} catch (e) {
throw AlarmException('Schedule notification with id $id error: $e');
}
}