add_2_calendar_plus 1.0.0 copy "add_2_calendar_plus: ^1.0.0" to clipboard
add_2_calendar_plus: ^1.0.0 copied to clipboard

A Flutter plugin to add, update, retrieve, and delete events on each platform's default calendar.

add_2_calendar_plus #

A Flutter plugin to add, update, retrieve, and delete events on each platform's default calendar.

Forked from add_2_calendar_new.

Installation #

Add to your pubspec.yaml:

dependencies:
  add_2_calendar_plus: ^1.0.0

Android integration #

The plugin doesn't need any special permissions to add events via the default calendar app. To add events silently (without launching the calendar app), add these permissions to your AndroidManifest.xml:

<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.READ_CALENDAR" />

Starting from API 30, Android requires package visibility configuration. Add a <queries> element as a child of the root element in your AndroidManifest.xml:

<queries>
  <intent>
    <action android:name="android.intent.action.INSERT" />
    <data android:mimeType="vnd.android.cursor.item/event" />
  </intent>
</queries>

iOS integration #

Add the following to your Info.plist:

<key>NSCalendarsUsageDescription</key>
<string>INSERT_REASON_HERE</string>

NSContactsUsageDescription is required for location autocomplete once Apple's UI is opened — the app may crash without it:

<key>NSContactsUsageDescription</key>
<string>INSERT_REASON_HERE</string>

Usage #

import 'package:add_2_calendar_plus/add_2_calendar_plus.dart';

Add an event #

Returns the saved Event with its native calendar id populated, or null on failure.

final Event event = Event(
  title: 'Event title',
  description: 'Event description',
  location: 'Event location',
  startDate: DateTime(2024, 6, 1, 10, 0),
  endDate: DateTime(2024, 6, 1, 11, 0),
  timeZone: 'Asia/Singapore',   // optional
  allDay: false,                // optional, defaults to false
  iosParams: IOSParams(
    reminder: Duration(hours: 1), // alarm before the event (iOS only)
    url: 'https://www.example.com', // URL attached to the event (iOS only)
  ),
  androidParams: AndroidParams(
    emailInvites: ['guest@example.com'], // invite emails (Android only)
  ),
);

final Event? savedEvent = await Add2Calendar.addEvent2Cal(event);
// savedEvent.id holds the native calendar event ID

Update an event #

event.id must be set (obtained from a previous addEvent2Cal call). Returns the updated Event or null on failure.

final Event? updatedEvent = await Add2Calendar.updateEvent(
  savedEvent.copyWith(title: 'New title'),
);

Retrieve an event #

Returns the Event if found, or null if it no longer exists.

final Event? event = await Add2Calendar.getEvent(savedEvent.id!);

Delete an event #

Returns true on success, false otherwise.

final bool deleted = await Add2Calendar.deleteEvent(savedEvent.id!);

Recurring events #

Add recurrence to an event by specifying a Recurrence. Use either ocurrences or endDate — not both.

Supported frequencies: daily, weekly, monthly, yearly.

Event(
  // ...
  recurrence: Recurrence(
    frequency: Frequency.weekly,
    interval: 2,       // every 2 weeks
    ocurrences: 10,    // end after 10 occurrences (mutually exclusive with endDate)
    // endDate: DateTime(2025, 1, 1), // or end on a specific date
  ),
);

Android also supports custom RRULE strings (RFC 5545):

Recurrence(
  frequency: Frequency.weekly,
  rRule: 'FREQ=WEEKLY;BYDAY=MO,WE,FR', // Android only
)

iOS language support #

By default the iOS calendar screen appears in English. To support additional languages, add them to your Info.plist:

<key>CFBundleLocalizations</key>
<array>
  <string>en</string>
  <string>es</string>
  <string>ja</string>
</array>

Example #

See the example/ folder for a runnable demo.

0
likes
160
points
321
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin to add, update, retrieve, and delete events on each platform's default calendar.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter

More

Packages that depend on add_2_calendar_plus

Packages that implement add_2_calendar_plus