getNextOccurrence method
TZDateTime?
getNextOccurrence({
- required DateTime lastOccurrence,
- required RepeatInterval repeatInterval,
- String? timeZone,
Calculates the next occurrence of a recurring notification.
Implementation
tz.TZDateTime? getNextOccurrence({
required DateTime lastOccurrence,
required RepeatInterval repeatInterval,
String? timeZone,
}) {
try {
final tz.TZDateTime lastTZDateTime = _convertToTZDateTime(
lastOccurrence,
timeZone,
);
switch (repeatInterval) {
case RepeatInterval.none:
return null;
case RepeatInterval.everyMinute:
return lastTZDateTime.add(const Duration(minutes: 1));
case RepeatInterval.hourly:
return lastTZDateTime.add(const Duration(hours: 1));
case RepeatInterval.daily:
return lastTZDateTime.add(const Duration(days: 1));
case RepeatInterval.weekly:
return lastTZDateTime.add(const Duration(days: 7));
case RepeatInterval.monthly:
return tz.TZDateTime(
lastTZDateTime.location,
lastTZDateTime.year,
lastTZDateTime.month + 1,
lastTZDateTime.day,
lastTZDateTime.hour,
lastTZDateTime.minute,
lastTZDateTime.second,
);
case RepeatInterval.yearly:
return tz.TZDateTime(
lastTZDateTime.location,
lastTZDateTime.year + 1,
lastTZDateTime.month,
lastTZDateTime.day,
lastTZDateTime.hour,
lastTZDateTime.minute,
lastTZDateTime.second,
);
}
} catch (e) {
safeDebugLog('Failed to calculate next occurrence: $e');
return null;
}
}