flutter_alarmkit
A Flutter plugin that provides access to Apple's AlarmKit framework, introduced in iOS 26 (WWDC 2025). This plugin allows you to schedule and manage prominent alarms and countdowns in your Flutter applications on iOS devices.
Your alarms will ring even when Do Not Disturb is enabled or if the app has been terminated.
See more: https://developer.apple.com/documentation/alarmkit
Features
Available features
- Request authorization to schedule alarms
- Schedule one-shot alarms
- Schedule countdown alarms
- Schedule recurrent alarms
- Listen to alarm updates
- Set custom alarm sounds
- Cancel alarms
- Stop alarms
More customizations coming soon.
Installation
Please carefully follow the installation steps in InstallationSteps.md.
Usage
Request Authorization
Before scheduling any alarms, you need to request authorization from the user:
import 'package:flutter_alarmkit/flutter_alarmkit.dart';
try {
final isAuthorized = await FlutterAlarmkit.requestAuthorization();
if (isAuthorized) {
print('Alarm authorization granted');
} else {
print('Alarm authorization denied or not determined');
}
} catch (e) {
print('Error requesting authorization: $e');
}
Listen to alarm updates
To listen to alarm updates (when alarms are added, updated, or removed):
final stream = FlutterAlarmkit.alarmUpdates();
stream.listen((alarmUpdate) {
print('Alarm updated: $alarmUpdate');
});
Schedule a One-Shot Alarm
To schedule a one-time alarm:
try {
final alarmId = await FlutterAlarmkit.scheduleOneShotAlarm(
dateTime: DateTime.now().add(Duration(hours: 1)),
label: 'My Alarm',
);
print('Alarm scheduled with ID: $alarmId');
} catch (e) {
print('Error scheduling alarm: $e');
}
Schedule a Countdown Alarm
To schedule a countdown alarm:
final alarmId = await FlutterAlarmkit.scheduleCountdownAlarm(
countdownDurationInSeconds: 10, // Duration before the alarm triggers
repeatDurationInSeconds: 5, // Duration between each repetition
label: 'My Countdown Alarm',
tintColor: '#0000FF',
);
Schedule a Recurrent Alarm
To schedule a recurrent alarm:
final alarmId = await FlutterAlarmkit.scheduleRecurrentAlarm(
weekdays: {Weekday.monday, Weekday.wednesday, Weekday.friday},
hour: 10,
minute: 0,
label: 'My Recurrent Alarm',
tintColor: '#0000FF',
);
Cancel an Alarm
To cancel an alarm:
await FlutterAlarmkit.cancelAlarm(alarmId: alarmId);
Stop an Alarm
To stop an alarm:
await FlutterAlarmkit.stopAlarm(alarmId: alarmId);
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.