device_calendar_plus_android
Android implementation of the device_calendar_plus plugin.
0.7.1
7.9K downloads/mo
#3245 most downloaded on pub.dev
bullet-to/device_calendar_plus
What this package is like to depend on
Last release 1 months ago
23 Jul 2026
Ships fairly regularly
a new release about every 6 weeks
Nearly every release is documented
notes for 16 of 16 stable releases
Nothing withdrawn
no release was ever pulled
9 months old
16 releases · first in 2025
16 releases in the last 12 months
see the full history below
Release timeline
16 releases · Nov 2025 to Jul 2026Releases
latest 16-
0.7.123 Jul 2026Release notes
Open source →Docs + packaging polish. No code or behaviour changes.
Changed
- Added the
devicepub.dev topic (droppedfederatedto stay within the five-topic limit).
Docs
- Slimmed the README to an overview plus a getting-started snippet, with the worked examples moved into focused topic guides under
doc/. - Trimmed the public API doc comments to the consumer-facing contract and removed native-API implementation details.
Release notes
Open source →Added
- Event maps include
colorHexread fromEvents.EVENT_COLORwhen the event has a custom color; absent otherwise (#117).
- Added the
-
0.7.017 Jun 2026Release notes
Open source →Feature release. App-facing API is additive;
device_calendar_plus_platform_interfacehas breaking signature changes for platform implementers.Added
- Write-only access —
requestPermissions(level: CalendarAccessLevel.writeOnly)for the gentler add-only prompt (#89). - Automatic permissions —
DeviceCalendar.instance.autoPermissions = AutoPermissionMode.asNeeded | .full; methods request access on first use (#90). - Optional
calendarId— omit it oncreateEventto write to the default calendar (#88). - Event reminders —
reminders: List<Duration>on create,Patch<List<Duration>>on update,Event.remindersread back; minute-granular relative offsets (#87).
Fixed
- Android: honest
permissionDenied(not "no writable calendar") when a default can't be resolved (#112); tighter denial reporting (#108). - Docs: iOS write-only re-prompts and upgrades in-app (#109).
All four packages bumped 0.6.0 → 0.7.0 in lockstep.
Release notes
Open source →Added
- Write-only access: a
writeOnlyrequest asks forWRITE_CALENDARonly.READ_CALENDARandWRITE_CALENDARshare theCALENDARgroup, so a later full request escalates to read access with no dialog (#89). createEventwith nocalendarIdresolves a default calendar — the primary writable calendar, falling back to the first writable one (#88).- Event reminders via
CalendarContract.Remindersrows andEvents.HAS_ALARM(#87).
Fixed
- Permanent-denial detection keys off
WRITE_CALENDAR, and a cancelled permission dialog no longer reportsdenied(#108). createEventwith nocalendarIdreportspermissionDeniedrather than "no writable calendar" when it can't read the calendar list to resolve a default (#112).
- Write-only access —
-
0.6.016 Jun 2026Release notes
Open source →Changed
- Breaking:
updateRecurringtakes the anchored occurrence's new start (newStartMillis) instead ofstartMinuteOfDay.shiftDatetranslates the series anchor by the wall-clock delta (calendar-day count + time-of-day) in the event'sEVENT_TIMEZONE, so a move can change the day and time together and stays correct across DST (#103).
Fixed
- A time-only
allEventsedit now re-writes the unchanged RRULE so the CalendarProvider re-expands the Instances cache; without it a moved DTSTART could read back as a single occurrence.
Behaviour
updateRecurringrejects astartthat moves the day of a series whose RRULE pins it (BYDAY/BYMONTHDAY/BYMONTH) unless a new rule is also supplied (dayMoveConflictsWithRule).
- Breaking:
-
0.5.215 Jun 2026Release notes
Open source →Fixed
listEventsnow returns a zero-duration (instantaneous) event that sits exactly on the query's start time; the half-open overlap check previously excluded it (#416)
-
0.5.115 Jun 2026Release notes
Open source →- iOS: fix showEventModal(edit: true) crash (#77)
- Docs: clarify showEventModal view modal is not read-only
Release notes
Open source →- No functional changes; version aligned with the rest of the suite for the 0.5.1 release
-
0.5.011 Jun 2026Release notes
Open source →Changed
- Breaking: recurring-edit split —
updateRecurring/deleteRecurringaccept onlyallEventsandthisAndFollowing; single occurrences go throughupdateEvent/deleteEventwith an occurrence timestamp (detached exception rows; deletes viaSTATUS_CANCELEDexceptions) updateRecurringtime changes preserve each occurrence's date, replacing only the time-of-day;thisAndFollowingtruncates the master withUNTILto match iOS'sEKSpan.futureEventssplit
Fixed
- Calendar Provider work now runs on a background thread. Method-channel handlers were doing blocking provider queries on the main thread, which could ANR on large calendars (#73). Thanks @mauriziopinotti for the report and a working proof-of-fix.
- A NULL
STATUScolumn reads back asnone; it was defaulted to0, which isSTATUS_TENTATIVE, so status-less events came back tentative (#70) — thanks @mauriziopinotti
- Breaking: recurring-edit split —
-
0.4.025 May 2026Release notes
Open source →Added
updateRecurring()— series-level recurring-event edits withEventSpan(allEvents / thisAndFollowing / thisInstance).thisAndFollowingtruncates the master withUNTILand starts a new series;thisInstancewrites a detached exception event.deleteRecurring()—allEventsdeletes the master;thisAndFollowingtruncates viaUNTIL;thisInstanceappends to the master'sEXDATEcolumn (no separate exception event needed).urlfield on events viaEvents.CUSTOM_APP_URIPatch<T>support inupdateEvent()— null leaves a field unchanged,Patch.setwrites,Patch.clearwrites the empty string to removeeditflag onshowEvent()— firesIntent.ACTION_EDITinstead ofACTION_VIEW
Fixed
- Event deletion now uses sync-adapter context so EventKit-equivalent listEvents calls stop returning the deleted row immediately
Changed
- Extracted all-day date-conversion helpers; no behaviour change
-
0.3.520 Apr 2026Release notes
Open source →Fixed
- All-day events appearing in wrong day's query in non-UTC timezones (#20)
PermissionServiceacceptsContext—hasPermissions()works without an Activity (#31)
-
0.3.408 Feb 2026 -
0.3.321 Dec 2025Release notes
Open source →Fixed
- Fixed parsing of
instanceIdfor events with@in their event ID (e.g., Google Calendar IDs like[email protected])
- Fixed parsing of
-
0.3.219 Dec 2025Release notes
Open source →Added
CreateCalendarOptionsAndroidfor specifying custom account name when creating calendarscreateCalendar()now accepts optionalaccountNameparameter via platform options
-
0.3.107 Nov 2025Release notes
Open source →Fixed
showEvent()now usesstartActivityForResult()to properly await until the calendar activity is dismissed
-
0.3.005 Nov 2025Release notes
Open source →Changed
- BREAKING:
deleteEvent()now always deletes entire series for recurring events (removeddeleteAllInstancesparameter) - BREAKING:
updateEvent()now always updates entire series for recurring events (removedupdateAllInstancesparameter) - Native code now extracts event ID from instance ID format automatically
Removed
- BREAKING:
NOT_SUPPORTEDerror code (no longer needed as single-instance operations are not attempted)
- BREAKING:
-
0.2.005 Nov 2025Release notes
Open source →Added
openAppSettings()implementation to open Android app settings via Intent
Removed
- BREAKING:
getPlatformVersion()implementation (unused boilerplate)
-
0.1.104 Nov 2025Release notes
Open source →Added
- ProGuard/R8 rules to prevent code stripping in release builds
- Automatic consumer ProGuard rules configuration
-
0.1.004 Nov 2025