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
}));
}