zonedSchedule method
- int id,
- String? title,
- String? body,
- TZDateTime scheduledDate,
- DarwinNotificationDetails? notificationDetails, {
- required UILocalNotificationDateInterpretation uiLocalNotificationDateInterpretation,
- String? payload,
- DateTimeComponents? matchDateTimeComponents,
Schedules a notification to be shown at the specified time in the future in a specific time zone.
Due to the limited support for time zones provided the UILocalNotification
APIs used on devices using iOS versions older than 10, the
uiLocalNotificationDateInterpretation
is needed to control how
scheduledDate
is interpreted. See official docs at
https://developer.apple.com/documentation/uikit/uilocalnotification/1616659-timezone
for more details. Note that due to this limited support, it's likely that
on older iOS devices, there will still be issues with daylight saving time
except for when the time zone used in the scheduledDate
matches the
device's time zone and uiLocalNotificationDateInterpretation
is set to
UILocalNotificationDateInterpretation.wallClockTime.
Implementation
Future<void> zonedSchedule(
int id,
String? title,
String? body,
TZDateTime scheduledDate,
DarwinNotificationDetails? notificationDetails, {
required UILocalNotificationDateInterpretation
uiLocalNotificationDateInterpretation,
String? payload,
DateTimeComponents? matchDateTimeComponents,
}) async {
validateId(id);
validateDateIsInTheFuture(scheduledDate, matchDateTimeComponents);
ArgumentError.checkNotNull(uiLocalNotificationDateInterpretation,
'uiLocalNotificationDateInterpretation');
final Map<String, Object?> serializedPlatformSpecifics =
notificationDetails?.toMap() ?? <String, Object>{};
await _channel.invokeMethod(
'zonedSchedule',
<String, Object?>{
'id': id,
'title': title,
'body': body,
'platformSpecifics': serializedPlatformSpecifics,
'payload': payload ?? '',
'uiLocalNotificationDateInterpretation':
uiLocalNotificationDateInterpretation.index,
}
..addAll(scheduledDate.toMap())
..addAll(matchDateTimeComponents == null
? <String, Object>{}
: <String, Object>{
'matchDateTimeComponents': matchDateTimeComponents.index
}));
}