Add the calendar usage description(s) to ios/Runner/Info.plist:
<key>NSCalendarsUsageDescription</key><string>This app needs calendar access to manage your events.</string><key>NSCalendarsFullAccessUsageDescription</key><string>This app needs calendar access to manage your events.</string>
NSCalendarsFullAccessUsageDescription is required on iOS 17+; NSCalendarsUsageDescription covers earlier versions.
Usage
import'package:manage_calendar_events/manage_calendar_events.dart';
final _calendarPlugin = CalendarPlugin();
Request permissions
final granted = await _calendarPlugin.hasPermissions() ?? false;
if (!granted) {
await _calendarPlugin.requestPermissions();
}
List calendars
final calendars = await _calendarPlugin.getCalendars();
final calendar = calendars!.first;
Create or delete a local calendar
final calendarId = await _calendarPlugin.createCalendar(
calendarName: 'My App Calendar',
color: Colors.blue,
);
// Only ever succeeds for a calendar created this way - it can't delete a// user's real synced Google/iCloud calendar.await _calendarPlugin.deleteCalendar(calendarId: calendarId!);
Read events
// Every event on a calendarfinal events = await _calendarPlugin.getEvents(calendarId: calendar.id!);
// Events in an explicit date rangefinal events = await _calendarPlugin.getEventsByDateRange(
calendarId: calendar.id!,
startDate: DateTime.now(),
endDate: DateTime.now().add(constDuration(days: 30)),
);
// Shortcuts for the current week / monthfinal weekEvents = await _calendarPlugin.getEventsByWeek(
calendarId: calendar.id!,
findDate: DateTime.now(),
);
final monthEvents = await _calendarPlugin.getEventsByMonth(
calendarId: calendar.id!,
findDate: DateTime.now(),
);
Create an event
final event = CalendarEvent(
title: 'Team standup',
description: 'Daily sync',
startDate: DateTime.now(),
endDate: DateTime.now().add(constDuration(hours: 1)),
reminder: Reminder(minutes: 15), // remind 15 minutes before the event
);
final eventId = await _calendarPlugin.createEvent(
calendarId: calendar.id!,
event: event,
);