This is a simple Flutter plugin to provider, read, write, edit and delete access to Apple Reminders on ios and MacOS.
When the reminders
class is instantiated it requests permission to access the users reminders. If permission has not yet been given a popup will appear asking for permission. Success or failure can be determined:
Future<bool> requestPermission()
This will prompt a system alert dialog with the text you provided from 'NSRemindersUsageDescription'. Returns true if user accepted prompt (or has already accepted), or false (or if it has already been declined previously).
Future<bool> hasAccess()
Apple Calendars has a default Reminders List it uses if no list is specified when creating a new reminder. The list ID can be determined:
Future<String?> getDefaultListId()
Apple Reminders support multiple lists of reminders. A complete list of lists can be determined:
Future<RemList?> getDefaultList()
Apple Reminders support multiple lists of reminders. A complete list of lists can be determined:
Future<List<RemList>> getAllLists()
Get all the reminders in a List by passing the RemList.id
to:
Future<List<Reminder>?> getReminders([String? id])
Attributes of a Reminder can be changed or a new Reminder can be created and then saved. Changes induce, but are not limited to, marking Reminders complete or not and setting due dates:
Future<Reminder> saveReminder(Reminder reminder)
Delete a reminder by passing the Reminder.id
to:
Future<String?> deleteReminder(String id) async`
Add the following key/value pair to your Info.plist
iOS 17 or BELOW:
<key>NSRemindersUsageDescription</key>
<string>INSERT_REASON_HERE</string>
iOS 17 or ABOVE:
<key>NSRemindersFullAccessUsageDescription</key>
<string>INSERT_REASON_HERE</string>
Warning: Although NSRemindersUsageDescription
is forward compatible with iOS 17 , this does not appear to be the case with iPad OS 17 when compiling with Xcode 15. TLDR: just add both keys regardless!
Add the following to macos/Runner/DebugProfile.entitlements
and 'macos/Runner/Release.entitlements'
<key>com.apple.security.personal-information.calendars</key>
<true/>
As this plugin only supports Apple Reminders, there is no Android, Web, Windows, or Linux integration.