createOrUpdateEvent method
Creates or updates an event
The event
paramter specifies how event data should be saved into the calendar
Always specify the Event.calendarId, to inform the plugin in which calendar
it should create or update the event.
Returns a Result with the newly created or updated Event.eventId
Implementation
Future<Result<String>?> createOrUpdateEvent(Event? event) async {
if(event == null) return null;
return _invokeChannelMethod(
ChannelConstants.methodNameCreateOrUpdateEvent,
assertParameters: (result) {
// Setting time to 0 for all day events
if (event.allDay == true) {
if(event.start != null) {event.start = DateTime(event.start!.year, event.start!.month, event.start!.day, 0, 0, 0);};
if(event.end != null) {event.end = DateTime(event.end!.year, event.end!.month, event.end!.day, 0, 0, 0);}
}
_assertParameter(
result,
!(event.allDay == true && (event.calendarId?.isEmpty ?? true) ||
event.start == null ||
event.end == null),
ErrorCodes.invalidArguments,
ErrorMessages.createOrUpdateEventInvalidArgumentsMessageAllDay,
);
_assertParameter(
result,
!(event.allDay != true &&
((event.calendarId?.isEmpty ?? true) ||
event.start == null ||
event.end == null ||
(event.start != null && event.end != null && event.start!.isAfter(event.end!)))),
ErrorCodes.invalidArguments,
ErrorMessages.createOrUpdateEventInvalidArgumentsMessage,
);
},
arguments: () => event.toJson(),
);
}