A modern, federated Flutter plugin for reading and writing device calendar events on Android and iOS.
Note: This is the developer/contributor documentation. For plugin usage and API documentation, see the device_calendar_plus package README.
This is a federated plugin following Flutter's federated plugin architecture:
device_calendar_plus/
├── packages/
│ ├── device_calendar_plus/ # Main package (public API)
│ ├── device_calendar_plus_platform_interface/ # Platform interface
│ ├── device_calendar_plus_android/ # Android implementation
│ └── device_calendar_plus_ios/ # iOS implementation
└── example/ # Example app & integration tests
-
device_calendar_plus: The main package that app developers depend on. Contains the public Dart API and exports platform interface types. -
device_calendar_plus_platform_interface: Defines the interface that platform implementations must follow. Contains method signatures and data contracts. -
device_calendar_plus_android: Android-specific implementation using Kotlin and the Android Calendar Provider API. -
device_calendar_plus_ios: iOS-specific implementation using Swift and EventKit. -
example/: Example app demonstrating plugin usage, also contains integration tests.
- Flutter SDK (latest stable)
- For iOS development: Xcode 15+
- For Android development: Android Studio with Android SDK 24+
Optional (but recommended):
- Very Good CLI:
dart pub global activate very_good_cli- Makes running tests faster with optimized configuration
- Clone the repository:
git clone https://github.com/yourusername/device_calendar_plus.git
cd device_calendar_plus- Install dependencies:
flutter pub getThis project uses Dart workspaces, so a single flutter pub get at the root will install dependencies for all packages.
Run all unit tests across all packages using Very Good CLI (recommended):
very_good test --recursiveThis will run tests in all /packages/*/test/ directories with optimized configuration.
Integration tests are located in example/integration_test/ and test the plugin against real platform APIs.
From the example directory:
cd example
./run_integration_tests.sh <device-id>Get the device ID from:
flutter devicesiOS:
- Requires a simulator or physical device
- Calendar permissions will be requested during tests
- Tests create temporary calendars that are cleaned up
Android:
- Requires an emulator or physical device with API 24+
- Calendar permissions will be requested during tests
- Tests create temporary calendars that are cleaned up
This project is closed to outside pull requests. Bug reports and feature requests are welcome - please open an issue. See CONTRIBUTING.md for the design philosophy and conventions.
MIT © 2025 Bullet
See LICENSE for details.
Maintained by Bullet — a cross-platform task + notes + calendar app built with Flutter.