Package selection guidance compiled from public package information, community data, and project usage.
A Flutter plugin that enables seamless management of calendar events on Android and iOS devices. It allows users to add, edit, and remove events with customizable reminders. The package provides a straightforward API for integrating calendar functionality into apps, making it ideal for scheduling, task management, or reminder-based applications. It supports both platforms and leverages native calendar APIs for reliable performance.
Use cases
Scheduling appointments
Creating task reminders
Building event planning apps
Integrating with productivity tools
Managing recurring events
Key features
Add, edit, and delete calendar events
Support for event reminders
Cross-platform (Android & iOS)
Simple and intuitive API
Native calendar integration
Suitable for
Productivity apps
Appointment schedulers
Task management tools
Reminder-based applications
Event-driven workflows
Considerations
Requires user permission to access calendars
Limited to Android and iOS platforms
May require handling platform-specific error cases
Permissions must be requested at runtime
Event data may vary slightly between platforms
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
manage_calendar_events
A Flutter plugin for reading, creating, updating, and deleting device calendar events — with reminders and attendees — on Android and iOS.
Platform support
Android
iOS
✓
✓
Features
List all calendars available on the device, including whether each one is read-only or local
Create and delete local (non-synced) calendars
Read events from a calendar — all events, a date range, or a whole week/month
Create and update events: title, description, location, URL, all-day flag, and a reminder
Delete events
Add, update, and delete reminders on an existing event
Add, list, and remove attendees on an event
Getting started
1. Add the dependency
dependencies:manage_calendar_events:^2.1.2
2. Android setup
Add the calendar permissions to android/app/src/main/AndroidManifest.xml:
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,
);