NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #230 most downloaded on pub.dev
A cross platform plugin for displaying and scheduling local notifications for Flutter applications with the ability to customise for each platform.
Last release today
03 Oct 2026
Ships fairly regularly
a new release about every 2 weeks
Some releases are documented
notes for 35 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
319 releases · first in 2018
[Android] calling the requestExactAlarmsPermission() method will now go directly to the alarm settings screen specific to the app instead the general
requestExactAlarmsPermission() method will now go directly to the alarm settings screen specific to the app instead the general alarm settings screen where users needed to pick the app they wanted to change the settings for. Thanks to the PR from ShunMcUpdated code snippet in readme to reflect changes done on renaming the requestPermission() method associated with the AndroidFlutterLocalNotifications
One column per quarter.
requestPermission() method associated with the AndroidFlutterLocalNotificationsPlugin class to requestNotificationsPermission(). Thanks to PR from Róger NinowrequestPermission() method as the word "method" itself was missing[Android] Breaking change renamed the requestPermission() method associated with the AndroidFlutterLocalNotificationsPlugin class to requestNotificati…
requestPermission() method associated with the AndroidFlutterLocalNotificationsPlugin class to requestNotificationsPermission(). This was done to be more explicit given another method (requestExactAlarmsPermission()) has been added that also requests a permission (more details below).AndroidManifest.xml. This means applications making use of either scheduled notifications, full-screen intent notifications or notification actions will now require changes in the application's own AndroidManifest.xml file. Please check the AndroidManifest.xml setup section of the readme for more details. The reason this was done was because not all applications will leverage all of the plugin's features. Doing this will now allow applications to only request the appropriate permissions needed for their application. This addresses issue 1687requestExactAlarmsPermission() method that has been added to the AndroidFlutterLocalNotificationsPlugin class that represents the Android implementation of the plugin. This has been done in response to behaviour changes introduced in Android 14 (API level 34) when comes to using exact alarms. See the official documentation about these changes here. This change addresses issue 1906periodicallyShow() method would fail to have the next subsequent ones scheduled. This issue started occuring in 14.0 where support for inexact notifications was added using the ScheduleMode enum that was added and resulted in the deprecation of androidAllowWhileIdle. A mechanism was added to help "migrate" old notifications that had androidAllowWhileIdle specified but didn't account for how there are recurring notifications that were scheduled using older versions of the plugin prior to androidAllowWhile being added. This was also released as part of the 15.1.1 and 14.1.3 hotfix releasesgetNotificationChannels() reports the wrong importance level or result in an exception if the importance level was unspecified. This was also released as part of the 15.1.2 and 14.1.4 hotfix releasespresentSound and defaultPresentSound properties that belong to the DarwinNotificationDetails and DarwinInitializationSettings classes respectively to clarify the background behaviour and how have a sound play even when app is the background yet these properties are set to falseDarwinNotificationDetails class where this This was being repeated. Thanks to the PR from Adrian JagielakNothing published for this version
Nothing published for this version
Nothing published for this version
…enum that was added and resulted in the deprecation of androidAllowWhileIdle. A mechanism was added to help "migrate" old notifications that wouldn't…
androidAllowWhileIdle flag was added) could fail to work. This issue started occuring in 14.0 where support for inexact notifications was added using the ScheduleMode enum that was added and resulted in the deprecation of androidAllowWhileIdle. A mechanism was added to help "migrate" old notifications that wouldn't have this flag so that it results in a notification scheduled with exact timing as per the old behaviour. Thanks to the PR from Ruchi Purohit. Note that this release is to include hotfix that was made as part of the 14.1.5 hotfix release[Android] fixed issue 2106 where calling getNotificationChannels() reports the wrong importance level or result in an exception if the importance leve
getNotificationChannels() reports the wrong importance level or result in an exception if the importance level was unspecified. This hotfix has been taken from the 16.0.0-dev.3 prerelease and included in the 14.1.4 hotfix release…enum that was added and resulted in the deprecation of androidAllowWhileIdle. A mechanism was added to help "migrate" old notifications that had andro…
periodicallyShow() method would fail to have the next subsequent ones scheduled. This issue started occuring in 14.0 where support for inexact notifications was added using the ScheduleMode enum that was added and resulted in the deprecation of androidAllowWhileIdle. A mechanism was added to help "migrate" old notifications that had androidAllowWhileIdle specified but didn't account for how there are recurring notifications that were scheduled using older versions of the plugin prior to androidAllowWhile being added. This hotfix has been taken from the 16.0.0-dev.2 prerelease and has also been applied to the 14.1.3 hotfix release as wellFixed formatting of 15.1.0 changelog entry
[iOS][macOS] added the ability to request provisional permissions. On iOS, this is only applicable to iOS 12 or newer. On macOS, this property is only
…enum that was added and resulted in the deprecation of androidAllowWhileIdle. A mechanism was added to help "migrate" old notifications that had andro…
ScheduleMode enum that was added and resulted in the deprecation of androidAllowWhileIdle. A mechanism was added to help "migrate" old notifications that had androidAllowWhileIdle specified but didn't account for how there are recurring notifications that were scheduled using older versions of the plugin prior to androidAllowWhile being added. This was also released part of the 14.1.2 hotfix releaseBreaking change removed deprecated schedule(), showDailyAtTime() and showWeeklyAtDayAndTime() methods. Notifications that were scheduled prior to this…
schedule(), showDailyAtTime() and showWeeklyAtDayAndTime() methods. Notifications that were scheduled prior to this release should still workTime classzonedSchedule() on Linux will now throw an UnimplementedError to align with how their is a Linux implementation but the method hasn't been implementedScheduledNotifReceiver instead of ScheduledNotifReceiver. When logging that exact alarm permissions have been revoked the the tag is now FLTLocalNotifPlugin instead of notificationinitialize() methodNothing published for this version
Nothing published for this version
…enum that was added and resulted in the deprecation of androidAllowWhileIdle. A mechanism was added to help "migrate" old notifications that wouldn't…
androidAllowWhileIdle flag was added) could fail to work. This issue started occuring in 14.0 where support for inexact notifications was added using the ScheduleMode enum that was added and resulted in the deprecation of androidAllowWhileIdle. A mechanism was added to help "migrate" old notifications that wouldn't have this flag so that it results in a notification scheduled with exact timing as per the old behaviour. Thanks to the PR from Ruchi Purohit[Android] fixed issue 2106 where calling getNotificationChannels() reports the wrong importance level or result in an exception if the importance leve
getNotificationChannels() reports the wrong importance level or result in an exception if the importance level was unspecified. This hotfix has been taken from the 16.0.0-dev.3 prereleaseRemoved duplicate changelog entry on example app being updated
…enum that was added and resulted in the deprecation of androidAllowWhileIdle. A mechanism was added to help "migrate" old notifications that had andro…
periodicallyShow() method would fail to have the next subsequent ones scheduled. This issue started occuring in 14.0 where support for inexact notifications was added using the ScheduleMode enum that was added and resulted in the deprecation of androidAllowWhileIdle. A mechanism was added to help "migrate" old notifications that had androidAllowWhileIdle specified but didn't account for how there are recurring notifications that were scheduled using older versions of the plugin prior to androidAllowWhile being added. This hotfix has been taken from the 16.0.0-dev.2 prerelease…enum that was added and resulted in the deprecation of androidAllowWhileIdle. A mechanism was added to help "migrate" old notifications that had andro…
ScheduleMode enum that was added and resulted in the deprecation of androidAllowWhileIdle. A mechanism was added to help "migrate" old notifications that had androidAllowWhileIdle specified but didn't account for how there are recurring notifications that were scheduled using older versions of the plugin prior to androidAllowWhile being added. This fix has been taken from the 15.0.1 release as a hotfixFixed typo in API docs for the deprecated showDailyAtTime() method. Thanks to the PR from Yuichiro Kawano
showDailyAtTime() method. Thanks to the PR from Yuichiro KawanoSystem.out.println()[Android] added alarmClock as one of the AndroidScheduleMode options. This is useful for cases where a notification functions as an alarm and *may* sh
alarmClock as one of the AndroidScheduleMode options. This is useful for cases where a notification functions as an alarm and may show an alarm icon on the status bar depending on the device Thanks to the PR from Muhammed Ballan[Android] fixed issue 1991 where tapping on a notification action with showUserInterface set to true whilst app is terminated wouldn't dismiss/cancel
showUserInterface set to true whilst app is terminated wouldn't dismiss/cancel notificationAdded missing note to the 14.0.0 release notes on a breaking change the AndroidFlutterLocalNotificationsPlugin APIs around scheduling notifications wh…
AndroidFlutterLocalNotificationsPlugin APIs around scheduling notifications where the allowWhileIdle has been removed and replaced by a scheduleMode parameter that allows for scheduling inexact notificationsAndroidScheduleMode enum but the exact alarm permissions had been revoked, an error log message will be written and notification will no longer be scheduled. This means recurring notifications would no longer be scheduled as well given the permission had been revokedBumped maximum Dart SDK constraint
Breaking change the id property of the ActiveNotification class is now nullable to help indicate that the notification may not have been created by th…
id property of the ActiveNotification class is now nullable to help indicate that the notification may not have been created by the plugin e.g. it was from Firebase Cloud Messaging. Thanks to the PR from frankvollebregtAndroidNotificationCategoryAndroidServiceForegroundTypeAndroidServiceStartTypeAudioAttributesUsageDayInterruptionLevelLinuxNotificationCategoryLinuxNotificationUrgencyPriorityAndroidScheduleMode to allow for configuring this if required. The androidAllowWhileIdle argument is now deprecated when using the APIs available for scheduling notifications via the FlutterLocalNotificationsPlugin APIs and will be removed in the future. Thanks to the PR from Joachim Böhmer. Note that if if a notification was scheduled with exact timing via the AndroidScheduleMode but the exact alarm permissions had been revoked, an error log message will be written and notification will no longer be scheduled. Do note that the androidScheduleMode parameter has a default value of AndroidScheduleMode.exact to align with what was the default value of androidAllowWhileIdle before (i.e. false) where that meant exact timing was to be used but the device being a low-powered idle may cause it to be delayed. When the androidAllowWhileIdle parameter is removed in the future, androidScheduleMode will become a required named parameter to ensure developers explicitly specify the value they want
androidAllowWhileIdle is deprecated via the FlutterLocalNotificationsPlugin APIs, allowWhileIdle has been removed and completely replaced by a scheduleMode parameter when whe directly using the AndroidFlutterLocalNotificationsPlugin APIszonedSchedule() with a date/time value that is exactly when daylight savings occurs and the APIs from Apple weren't able to resolve what the actual date/time is meant to beAndroidServiceForegroundType values to align with new additions that are part of Android 14. Thanks to the PR from Rexiosmockito dev dependencyIOS as part of the name instead of the newer classes that have the Darwin prefixNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
[Android] Bumped Android Gradle plugin to 7.3.1. Thanks to the PR from Rexios
flutter_local_notifications_linux 2.0.0 as ffi 2.0.0 requires Dart 2.17 at a minimum and that shipped with Flutter 3.0.0ffi dependency that Linux implementation of the plugin was already using@mipmap/ic_launcher resource requires additional release build configuration. Thanks to the PR from Daniel Arndtdependencies {
implementation 'androidx.window:window:1.0.0'
implementation 'androidx.window:window-java:1.0.0'
...
}
Fixed issue 1796 where a java.lang.ClassCastException may be thrown on some Android devices when the onDidReceiveBackgroundNotificationResponse has be
java.lang.ClassCastException may be thrown on some Android devices when the onDidReceiveBackgroundNotificationResponse has been specified when calling initialize()Updated Kotlin version used in example app
[Android] removed reference to Android V1 embedding. Thanks to PR from Simon Ser
[Android] changed callback lookup for notification actions to take place after Flutter engine to ensure callback cache has been initialised to find th
Updated readme to indicate that the timezone package should be added as a direct dependency according to this official lint rule
timezone package should be added as a direct dependency according to this official lint ruleflutter_local_notification_linux that was meant to be done in 12.0.0[iOS] suppressed deprecation warnings where plugin was Apple's old notification APIs to support older iOS devices
onDidReceiveBackgroundNotificationResponse optional callback hasn't been specified.Bumped dbus dependency via flutter_local_notifications_linux
dbus dependency via flutter_local_notifications_linux[Android] Suppressed deprecation warning on calling the `getParcelableExtra`) Intent API
getParcelableExtra Intent APIStreamController instead to minimise use of dependencies and removed unused shared_preferences dependencyBumped timezone dependency. To err on the safe when it comes to dependency version conflicts, this is being published as major release as the updated
timezone dependency. To err on the safe when it comes to dependency version conflicts, this is being published as major release as the updated timezone package was published as a major release. Thanks to the PR from Joachim NohlBreaking change [Android] zonedSchedule()'s implementation has switched to using desugaring instead of the ThreeTen Android Backport library. This req…
zonedSchedule()'s implementation has switched to using desugaring instead of the ThreeTen Android Backport library. This required the plugin to update to using Android Gradle plugin 4.2.2 and applications may need to bump their Android Gradle plugin dependency to at least 4.2.2 as a result. Added a "Gradle setup" section underneath "Android setup" with details on the extra setup neededPlatformExceptions that can occur on Android have been updated
INVALID_ICON -> invalid_iconINVALID_LARGE_ICON -> invalid_large_iconINVALID_BIG_PICTURE -> invalid_big_pictureINVALID_SOUND -> invalid_soundINVALID_LED_DETAILS -> invalid_led_detailsGET_ACTIVE_NOTIFICATIONS_ERROR_CODE -> unsupported_os_versionGET_NOTIFICATION_CHANNELS_ERROR_CODE -> getNotificationChannelsErrorGET_ACTIVE_NOTIFICATION_MESSAGING_STYLE_ERROR_CODE -> getActiveNotificationMessagingStylePERMISSION_REQUEST_IN_PROGRESS -> permissionRequestInProgresscategory of the AndroidNotificationDetails now requires an instance of the newly added AndroidNotificationCategory class instead of a string. This was to improve the discoverability of the APIs and improve the semantics as the category can specified in a similar fashion to using an enum valueNotificationResponse class
onDidReceiveNotificationResponse: invoked only when the app is running. This works for when a user has selected a notification or notification action. This replaces the onSelectNotification callback that existed before. For notification actions, the action needs to be configured to indicate the the app or user interface should be shown on invoking the action for this callback to be invoked i.e. by specifying the DarwinNotificationActionOption.foreground option on iOS and the showsUserInterface property on Android. On macOS and Linux, as there's no support for background isolates it will always invoke this callbackonDidReceiveBackgroundNotificationResponse: invoked on a background isolate for when a user has selected a notification action. This replaces the onSelectNotificationAction callbackNotificationAppLaunchDetails has been updated to contain an instance NotificationResponse class with the payload belonging to the NotificationResponse class. This is to allow knowing more details about what caused the app to launch e.g. if a notification action was used to do soIOS or MacOS, these are now replaced by classes with a Darwin prefix. For example, IOSInitializationSettings can be replaced with DarwinInitializationSettingsrequestPermissions() method of the MacOSFlutterLocalNotificationsPlugin class now only accepts non-nullable parameters that default to false. This makes it consistent with the iOS implementation of the pluginLinuxNotificationCategory no longer has factory constructors but has static constant fields instead to make the semantics more similar to access enum valuespendingNotificationRequests method may not report the correct number of scheduled notifications if it is invoked before the data had been saved to shared preferencesgetActiveNotifications() is now supported for iOS versions 10.0 or newergetActiveNotifications() is now supported for macOS versions 10.14 or newerflutter_local_notifications_linux's dependencies (dbus)0compileSdkVersionNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →