eventide
Provides a easy-to-use flutter interface to access & modify native device calendars (iOS & Android)
2.3.0
8.9K downloads/mo
#3079 most downloaded on pub.dev
sncf-connect-tech/eventide
What this package is like to depend on
Last release 1 months ago
03 Jul 2026
Release timing varies
gaps range from 9 days to 3 months
Nearly every release is documented
notes for 25 of 25 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
26 releases · first in 2025
12 releases in the last 12 months
see the full history below
Release timeline
26 releases · Feb 2025 to Jul 2026Releases
latest 26-
2.3.003 Jul 2026Release notes
Open source →- Edit feature for calendars and events.
- Refactored ETException as a sealed class hierarchy.
-
2.2.111 Jun 2026Release notes
Open source →What's Changed
- Fix createEventThroughNativePlatform on Android by enforcing ICS compatibility. IcsEventManager.generateIcsContent had three RFC 5545 violations.
Full Changelog: v2.2.0...v2.2.1
Release notes
Open source →- Fix createEventThroughNativePlatform on Android by enforcing ICS compatibility. IcsEventManager.generateIcsContent had three RFC 5545 violations.
-
2.2.001 Apr 2026Release notes
Open source →What's Changed
- createEventInDefaultCalendar & createEventThroughNativePlatform - using ical format by @AlexisChoupault in #104
Full Changelog: v2.1.1...v2.2.0
Release notes
Open source →- Definitive fix in
createEventInDefaultCalendar&createEventThroughNativePlatformon Android :: using ical format under the hood
-
2.1.116 Feb 2026Release notes
Open source →What's Changed
- Issue#101 all day flag in create event through native platform by @AlexisChoupault in #102
Full Changelog: v2.1.0...v2.1.1
Release notes
Open source →- Fix allDay flag in createEventThroughNativePlatform: allDay extra flag was
CalendarContract.EXTRA_EVENT_ALL_DAYand notCalendarContract.Events.ALL_DAY
-
2.1.027 Jan 2026Release notes
Open source →Release notes
Open source →- Account name improvement on Android. We figured we could fetch a displayable account name based on the account type using PackageManager. i.e.
com.googlewill result in a cleanGoogleaccount.name - Dart dev dependencies upgrade
- Account name improvement on Android. We figured we could fetch a displayable account name based on the account type using PackageManager. i.e.
-
2.0.114 Jan 2026Release notes
Open source →Release notes
Open source →- Fix sourceType comparison on iOS (https://github.com/sncf-connect-tech/eventide/issues/98)
-
2.0.016 Dec 2025Release notes
Open source →What's Changed
- fix Issue#88 & #89 - better account handling by @AlexisChoupault in #92
- Remove automatic duration addition in retrieveEvents method by @AlexisChoupault in #96
- feat: add location support to events by @StoneyDev in #91
- fix Issue#87 replace list by iterable in plugin interface by @AlexisChoupault in #93
- Upgrade min version flutter to 3.29.0 & prepare eventide 2.0.0 by @AlexisChoupault in #94
New Contributors
- @StoneyDev made their first contribution in #91
Full Changelog: v1.0.2...v2.0.0
Release notes
Open source →- 🚨 BREAKING CHANGES - Account API Redesign:
- createCalendar(): Parameter
localAccountName(String) replaced withaccount(ETAccount?)- Before:
createCalendar(title: 'Work', color: Colors.red, localAccountName: 'My App') - After:
createCalendar(title: 'Work', color: Colors.red, account: myAccount) - When
accountis null, calendar is created in default account/source
- Before:
- retrieveCalendars(): Parameter
fromLocalAccountName(String) replaced withaccount(ETAccount?)- Before:
retrieveCalendars(fromLocalAccountName: 'My App') - After:
retrieveCalendars(account: myAccount)
- Before:
- New Method: Added
retrieveAccounts()to get all available accounts (Google, Exchange, local, etc.)- Returns
Iterable<ETAccount>with account details for better account management - Use this method to get accounts before creating calendars or filtering
- Returns
- createCalendar(): Parameter
- Enhanced Account Management:
- More robust account handling across platforms
- Better integration with system accounts (Google, Exchange, iCloud, etc.)
- Improved account-based calendar filtering and organization
- Migration Guide:
// OLD API (v1.x) final calendars = await eventide.retrieveCalendars(fromLocalAccountName: 'My App'); await eventide.createCalendar(title: 'Work', color: Colors.red, localAccountName: 'My App'); // NEW API (v2.0) final accounts = await eventide.retrieveAccounts(); final myAccount = accounts.firstWhere((acc) => acc.name == 'My App'); final calendars = await eventide.retrieveCalendars(account: myAccount); await eventide.createCalendar(title: 'Work', color: Colors.red, account: myAccount); - Removed automatic duration addition for parameters
startDateandendDateinretrieveEvents()method - Upcasting:
- All
Listoccurrences are nowIterable
- All
- Updates minimum supported SDK version to Flutter 3.29/Dart 3.7
- Add
locationtoETEventby @StoneyDev
-
1.0.222 Oct 2025Release notes
Open source →What's Changed
- event creation and retrieval now handles url on android by @AlexisChoupault in #86
Full Changelog: v1.0.1...v1.0.2
Release notes
Open source →- Android URL Support: Added comprehensive URL handling for event creation and retrieval. Android Calendar API lacks native URL field support, so implemented intelligent description/URL merging system that preserves both fields while maintaining compatibility with existing calendar apps
- Enhanced Native-Only Example App: Added prefill parameters toggle to demonstrate
createEventThroughNativePlatform()flexibility- New configuration switch to enable/disable parameter pre-population
- Demonstrates both empty form (no parameters) and prefilled form usage patterns
- Dynamic UI that adapts button text and success messages based on toggle state
- Improved user experience for testing different API usage scenarios
-
1.0.115 Oct 2025Release notes
Open source →Release notes
Open source →- Restored example app as it was not appearing on pub.dev. Put the more complex examples in new
example/more-complex/folder.
- Restored example app as it was not appearing on pub.dev. Put the more complex examples in new
-
1.0.013 Oct 2025Release notes
Open source →What's Changed
- fix wrong allDay attribute Boolean to Int cast in event creation by @AlexisChoupault in #67
- Issues #63 & #65 - fix add event to default calendar & add event through native ui by @AlexisChoupault in #74
Full Changelog: v0.10.2...v1.0.0
Release notes
Open source →- Breaking Change - Android Permissions: Removed default calendar permissions from eventide's
AndroidManifest.xml. Apps must now declare needed permissions based on their usage:android.permission.READ_CALENDARfor reading calendars/eventsandroid.permission.WRITE_CALENDARfor creating/modifying calendars/events- No permissions required for
createEventInDefaultCalendar()orcreateEventThroughNativePlatform()(use system Intent)
- Android Enhancement:
createEventInDefaultCalendar()now uses system Intent to open calendar app directly (no permissions needed) - New Method: Added
createEventThroughNativePlatform()for platform-native event creation- iOS: Opens native event creation modal with write-only permission support
- Android: Uses system calendar app (identical behavior to
createEventInDefaultCalendar()) - All parameters optional for maximum flexibility
- No permissions required in AndroidManifest.xml or Info.plist
- Enhanced Exception Handling: Added new specific exception types:
ETUserCanceledException: User canceled event creation in native platformETPresentationException: Event creation view cannot be presented
- Removed Exception: Removed unused
ETNotSupportedByPlatformexception - Privacy-First Approach: Enhanced documentation emphasizing user privacy and minimal permission requests
- Android Bug Fix: Fixed
allDayattribute Boolean to Int cast in event creation - CI/CD Improvements: Removed conditional CI jobs for better workflow reliability
-
1.0.0+114 Oct 2025Release notes
Open source →What's Changed
- Restore ETNotSupportedByPlatform by @AlexisChoupault in #76
- Split example app by @AlexisChoupault in #79
- Add quickstart example by @AlexisChoupault in #81
Full Changelog: v1.0.0...v1.0.0+1
Release notes
Open source →- Restored ETNotSupportedByPlatform as it was thrown by
createAttendee()andremoveAttendee()methods on iOS. - Splitted example app into 3 "use-case" apps
- Quickstart example for pub.dev
-
0.11.0-beta.103 Oct 2025 pre-releaseNothing published for this version
-
0.10.209 Jul 2025Release notes
Open source →- Android fix:
createEventInDefaultCalendar()did not retrieve any default calendar when there was multiple primary calendars. Now also returns any writable calendar when there is no primary calendars
- Android fix:
-
0.10.109 Jul 2025Release notes
Open source →- Fixed DateTime UTC handling in
createEvent(),createEventInDefaultCalendar()andretrieveEvents()by systemically callingdateTime.toUtc()
- Fixed DateTime UTC handling in
-
0.10.008 Jul 2025Release notes
Open source →- Changed signature of createEventInDefaultCalendar to not return the created event as the event will not be editable
-
0.9.108 Jul 2025Release notes
Open source →- Fix double (write-only and full) permission prompt issue on iOS by creating reminders in the same method channel as the event creation
- Fix permission issue on Android by binding PermissionHandler as a RequestPermissionsResultListener
- Improved docs
-
0.9.007 Jul 2025Release notes
Open source →- Removed retrieveDefaultCalendar because it did not make sense to return a virtual calendar on iOS (error-prone)
- Created createEventInDefaultCalendar instead to directly create an event and prompt write-only access on iOS 17+
- Created .pubignore file to remove example app and other useless files from being published
-
0.8.103 Jul 2025Release notes
Open source →- Removed final clause on Eventide class because it prevented it from being mocked
-
0.8.003 Jul 2025Release notes
Open source →- iOS 17 Support: Added support for iOS 17 write-only calendar access
- Permission Enhancement:
retrieveDefaultCalendar()now prompts for write-only access on iOS 17+ - Documentation: Comprehensive documentation update with detailed API reference
- Platform Features: Added dedicated section for platform-specific features
-
0.7.009 Apr 2025Release notes
Open source →- Android Calendar Fix: Fixed calendar creation to use local accounts by default
- Breaking Change:
localAccountNameis now mandatory when creating calendars - Account Management: Improved account handling for better calendar organization
-
0.6.007 Apr 2025Release notes
Open source →- Dependencies: Removed dependency to equatable
- Pigeon Update: Upgraded pigeon dependency to 25.2.0
- Requirements: Set minimum versions - Flutter 3.27.0 & Dart 3.6.0
-
0.5.002 Apr 2025Release notes
Open source →- Attendees Support: Retrieve attendees through events (Android & iOS)
- Attendee Management: Create/delete attendees (Android only due to iOS EventKit limitations)
- Development: Set up lefthook & CI format check
- Bug Fixes: Fixed permission checks and configuration issues
-
0.4.005 Mar 2025Release notes
Open source →- iOS Enhancement: Added Swift Package Manager support
- Code Quality: Updated to Dart 3.7.0 format standards
-
0.3.004 Mar 2025Release notes
Open source →- Reminders: Create reminders alongside event creation
- Bug Fix: Fixed Android issue where name was incorrectly assigned to type field
-
0.2.025 Feb 2025Release notes
Open source →- Build Fix: Resolved Gradle issue by targeting JVM 17
- New Feature: Exposed
ETAccountclass with name and type properties (Issue #8)- iOS:
name= EKSource.sourceIdentifier,type= EKSource.sourceType - Android:
name= CalendarContract.Calendars.ACCOUNT_NAME,type= CalendarContract.Calendars.ACCOUNT_TYPE
- iOS:
-
0.1.011 Feb 2025Release notes
Open source →Initial Release 🎉
Core features:
- Calendar Management: Create, retrieve, and delete calendars
- Event Management: Create, retrieve, and delete events
- Reminder System: Create and delete reminders for events
- Permission Handling: Automatic system calendar permission management
- Cross-Platform: Full support for iOS and Android
- Exception Handling: Custom exceptions for better error management