Skip to content

Upgrading flutter_local_notifications 1 to 2

Breaking1.5.0+1 → 2.0.2Breaking4Deprecated2New7Changed3Fixed4Other8

BreakingUpgrade verdict

4 breaking changes.

  • Enum values now use lower camel case, so any code referencing the old names must be updated.
  • Code that builds these settings objects must switch to named arguments.
  • A method that was only meant for internal use can no longer be called from your code.
  • Passing null to the iOS initialization settings now fails an assertion.
Top 5 of 6 that need code or config changes

Dart SDK requirement changed in 2.0.0: >=2.0.0 <3.0.0 → >=2.6.0 <3.0.0.

Breaking4
Renames all enum values to lower camel case across Day, AndroidNotificationChannelAction, Importance, Priority, GroupAlertBehavior, NotificationVisibility and RepeatInterval.
DayAndroidNotificationChannelActionImportancePriorityGroupAlertBehaviorNotificationVisibilityRepeatIntervaldefaultImportance
InitializationSettings and NotificationDetails now take named parameters android, iOS and macOS instead of positional parameters.
InitializationSettingsNotificationDetailsandroidiOSmacOS
The internal toMap method used to transfer data over platform channels is no longer publicly accessible.
toMap
Adds assertions to the IOSInitializationSettings constructor to prevent null values being passed in.
IOSInitializationSettings
Deprecated2
Adds a note on migrating away from the deprecated methods for scheduling daily and weekly notifications.
Deprecates schedule, showDailyAtTime and showWeeklyAtDayAndTime due to time zone problems, especially daylight savings.
scheduleshowDailyAtTimeshowWeeklyAtDayAndTime

Generated by DepDelta from published Dart source. Not mixed with prose notes.

  • removed: field InitializationSettings.ios: final IOSInitializationSettings
  • removed: member AndroidNotificationChannelAction.CreateIfNotExists
  • removed: member AndroidNotificationChannelAction.Update
  • removed: member AndroidNotificationStyle.BigPicture
  • removed: member AndroidNotificationStyle.BigText
  • removed: member AndroidNotificationStyle.Default
  • removed: member AndroidNotificationStyle.Inbox
  • removed: member AndroidNotificationStyle.Media
  • removed: member AndroidNotificationStyle.Messaging
  • removed: member GroupAlertBehavior.All
  • removed: member GroupAlertBehavior.Children
  • removed: member GroupAlertBehavior.Summary
  • removed: member NotificationVisibility.Private
  • removed: member NotificationVisibility.Public
  • removed: member NotificationVisibility.Secret
  • removed: method AndroidInitializationSettings.toMap(): Map<String, dynamic>
  • removed: method AndroidNotificationChannel.toMap(): Map<String, dynamic>
  • removed: method AndroidNotificationDetails.toMap(): Map<String, dynamic>
  • removed: method BigPictureStyleInformation.toMap(): Map<String, dynamic>
  • removed: method BigTextStyleInformation.toMap(): Map<String, dynamic>
  • removed: method DefaultStyleInformation.toMap(): Map<String, dynamic>
  • removed: method IOSInitializationSettings.toMap(): Map<String, dynamic>
  • removed: method IOSNotificationAttachment.toMap(): Map<String, dynamic>
  • removed: method IOSNotificationDetails.toMap(): Map<String, dynamic>
  • removed: method InboxStyleInformation.toMap(): Map<String, dynamic>
  • removed: method Message.toMap(): Map<String, dynamic>
  • removed: method MessagingStyleInformation.toMap(): Map<String, dynamic>
  • removed: method Person.toMap(): Map<String, dynamic>
  • removed: method StyleInformation.toMap(): Map<String, dynamic>
  • removed: method Time.toMap(): Map<String, int>
  • removed: static field Day.Friday: const
  • removed: static field Day.Monday: const
  • removed: static field Day.Saturday: const
  • removed: static field Day.Sunday: const
  • removed: static field Day.Thursday: const
  • removed: static field Day.Tuesday: const
  • removed: static field Day.Wednesday: const
  • removed: static field Importance.Default: const
  • removed: static field Importance.High: const
  • removed: static field Importance.Low: const
  • removed: static field Importance.Max: const
  • removed: static field Importance.Min: const
  • removed: static field Importance.None: const
  • removed: static field Importance.Unspecified: const
  • removed: static field Priority.Default: const
  • removed: static field Priority.High: const
  • removed: static field Priority.Low: const
  • removed: static field Priority.Max: const
  • removed: static field Priority.Min: const
  • changed: ctor IOSNotificationDetails({ this.presentAlert, this.presentBadge, this.presentSound, this.sound, this.badgeNumber, this.attachments, }) → ctor IOSNotificationDetails({ this.presentAlert, this.presentBadge, this.presentSound, this.sound, this.badgeNumber, this.attachments, this.subtitle, })
  • changed: ctor InitializationSettings( this.android, this.ios, ) → ctor InitializationSettings({ this.android, this.iOS, this.macOS, })
  • changed: ctor NotificationDetails( this.android, this.iOS, ) → ctor NotificationDetails({ this.android, this.iOS, this.macOS, })
  • changed: method AndroidFlutterLocalNotificationsPlugin.initialize(AndroidInitializationSettings initializationSettings, {SelectNotificationCallback onSelectNotification}): Future<bool> → method AndroidFlutterLocalNotificationsPlugin.initialize( AndroidInitializationSettings initializationSettings, { SelectNotificationCallback onSelectNotification, }): Future<bool>
  • changed: method AndroidFlutterLocalNotificationsPlugin.periodicallyShow( int id, String title, String body, RepeatInterval repeatInterval, {AndroidNotificationDetails notificationDetails, String payload}): Future<void> → method AndroidFlutterLocalNotificationsPlugin.periodicallyShow( int id, String title, String body, RepeatInterval repeatInterval, { AndroidNotificationDetails notificationDetails, String payload, bool androidAllowWhileIdle = …, }): Future<void>
  • changed: method AndroidFlutterLocalNotificationsPlugin.schedule(int id, String title, String body, DateTime scheduledDate, AndroidNotificationDetails notificationDetails, {String payload, bool androidAllowWhileIdle = …}): Future<void> → method AndroidFlutterLocalNotificationsPlugin.schedule( int id, String title, String body, DateTime scheduledDate, AndroidNotificationDetails notificationDetails, { String payload, bool androidAllowWhileIdle = …, }): Future<void>
  • changed: method AndroidFlutterLocalNotificationsPlugin.show(int id, String title, String body, {AndroidNotificationDetails notificationDetails, String payload}): Future<void> → method AndroidFlutterLocalNotificationsPlugin.show( int id, String title, String body, { AndroidNotificationDetails notificationDetails, String payload, }): Future<void>
  • changed: method AndroidFlutterLocalNotificationsPlugin.showDailyAtTime(int id, String title, String body, Time notificationTime, AndroidNotificationDetails notificationDetails, {String payload}): Future<void> → method AndroidFlutterLocalNotificationsPlugin.showDailyAtTime( int id, String title, String body, Time notificationTime, AndroidNotificationDetails notificationDetails, { String payload, }): Future<void>
  • changed: method AndroidFlutterLocalNotificationsPlugin.showWeeklyAtDayAndTime( int id, String title, String body, Day day, Time notificationTime, AndroidNotificationDetails notificationDetails, {String payload}): Future<void> → method AndroidFlutterLocalNotificationsPlugin.showWeeklyAtDayAndTime( int id, String title, String body, Day day, Time notificationTime, AndroidNotificationDetails notificationDetails, { String payload, }): Future<void>
  • changed: method FlutterLocalNotificationsPlugin.initialize(InitializationSettings initializationSettings, {SelectNotificationCallback onSelectNotification}): Future<bool> → method FlutterLocalNotificationsPlugin.initialize( InitializationSettings initializationSettings, { SelectNotificationCallback onSelectNotification, }): Future<bool>
  • changed: method FlutterLocalNotificationsPlugin.periodicallyShow(int id, String title, String body, RepeatInterval repeatInterval, NotificationDetails notificationDetails, {String payload}): Future<void> → method FlutterLocalNotificationsPlugin.periodicallyShow( int id, String title, String body, RepeatInterval repeatInterval, NotificationDetails notificationDetails, { String payload, bool androidAllowWhileIdle = …, }): Future<void>
  • changed: method FlutterLocalNotificationsPlugin.schedule(int id, String title, String body, DateTime scheduledDate, NotificationDetails notificationDetails, {String payload, bool androidAllowWhileIdle = …}): Future<void> → method FlutterLocalNotificationsPlugin.schedule( int id, String title, String body, DateTime scheduledDate, NotificationDetails notificationDetails, { String payload, bool androidAllowWhileIdle = …, }): Future<void>
  • changed: method FlutterLocalNotificationsPlugin.show(int id, String title, String body, NotificationDetails notificationDetails, {String payload}): Future<void> → method FlutterLocalNotificationsPlugin.show( int id, String title, String body, NotificationDetails notificationDetails, { String payload, }): Future<void>
  • changed: method FlutterLocalNotificationsPlugin.showDailyAtTime(int id, String title, String body, Time notificationTime, NotificationDetails notificationDetails, {String payload}): Future<void> → method FlutterLocalNotificationsPlugin.showDailyAtTime( int id, String title, String body, Time notificationTime, NotificationDetails notificationDetails, { String payload, }): Future<void>
  • changed: method FlutterLocalNotificationsPlugin.showWeeklyAtDayAndTime(int id, String title, String body, Day day, Time notificationTime, NotificationDetails notificationDetails, {String payload}): Future<void> → method FlutterLocalNotificationsPlugin.showWeeklyAtDayAndTime( int id, String title, String body, Day day, Time notificationTime, NotificationDetails notificationDetails, { String payload, }): Future<void>
  • changed: method IOSFlutterLocalNotificationsPlugin.initialize(IOSInitializationSettings initializationSettings, {SelectNotificationCallback onSelectNotification}): Future<bool> → method IOSFlutterLocalNotificationsPlugin.initialize( IOSInitializationSettings initializationSettings, { SelectNotificationCallback onSelectNotification, }): Future<bool>
  • changed: method IOSFlutterLocalNotificationsPlugin.periodicallyShow( int id, String title, String body, RepeatInterval repeatInterval, {IOSNotificationDetails notificationDetails, String payload}): Future<void> → method IOSFlutterLocalNotificationsPlugin.periodicallyShow( int id, String title, String body, RepeatInterval repeatInterval, { IOSNotificationDetails notificationDetails, String payload, }): Future<void>
  • changed: method IOSFlutterLocalNotificationsPlugin.requestPermissions({bool sound, bool alert, bool badge}): Future<bool> → method IOSFlutterLocalNotificationsPlugin.requestPermissions({ bool sound, bool alert, bool badge, }): Future<bool>
  • changed: method IOSFlutterLocalNotificationsPlugin.schedule(int id, String title, String body, DateTime scheduledDate, IOSNotificationDetails notificationDetails, {String payload}): Future<void> → method IOSFlutterLocalNotificationsPlugin.schedule( int id, String title, String body, DateTime scheduledDate, IOSNotificationDetails notificationDetails, { String payload, }): Future<void>
  • changed: method IOSFlutterLocalNotificationsPlugin.show(int id, String title, String body, {IOSNotificationDetails notificationDetails, String payload}): Future<void> → method IOSFlutterLocalNotificationsPlugin.show( int id, String title, String body, { IOSNotificationDetails notificationDetails, String payload, }): Future<void>
  • changed: method IOSFlutterLocalNotificationsPlugin.showDailyAtTime(int id, String title, String body, Time notificationTime, IOSNotificationDetails notificationDetails, {String payload}): Future<void> → method IOSFlutterLocalNotificationsPlugin.showDailyAtTime( int id, String title, String body, Time notificationTime, IOSNotificationDetails notificationDetails, { String payload, }): Future<void>
  • changed: method IOSFlutterLocalNotificationsPlugin.showWeeklyAtDayAndTime( int id, String title, String body, Day day, Time notificationTime, IOSNotificationDetails notificationDetails, {String payload}): Future<void> → method IOSFlutterLocalNotificationsPlugin.showWeeklyAtDayAndTime( int id, String title, String body, Day day, Time notificationTime, IOSNotificationDetails notificationDetails, { String payload, }): Future<void>
  • added: class ActiveNotification
  • added: class MacOSFlutterLocalNotificationsPlugin extends MethodChannelFlutterLocalNotificationsPlugin
  • added: class MacOSInitializationSettings
  • added: class MacOSNotificationAttachment
  • added: class MacOSNotificationDetails
  • added: ctor ActiveNotification( this.id, this.channelId, this.title, this.body, )
  • added: ctor MacOSInitializationSettings({ this.requestAlertPermission = …, this.requestSoundPermission = …, this.requestBadgePermission = …, this.defaultPresentAlert = …, this.defaultPresentSound = …, this.defaultPresentBadge = …, })
  • added: ctor MacOSNotificationAttachment( this.filePath, { this.identifier, })
  • added: ctor MacOSNotificationDetails({ this.presentAlert, this.presentBadge, this.presentSound, this.sound, this.badgeNumber, this.attachments, this.subtitle, })
  • added: enum ScheduledNotificationRepeatFrequency
  • added: enum UILocalNotificationDateInterpretation
  • added: field ActiveNotification.body: final String
  • added: field ActiveNotification.channelId: final String
  • added: field ActiveNotification.id: final int
  • added: field ActiveNotification.title: final String
  • added: field AndroidNotificationDetails.fullScreenIntent: final bool
  • added: field AndroidNotificationDetails.shortcutId: final String
  • added: field IOSNotificationDetails.subtitle: final String
  • added: field InitializationSettings.iOS: final IOSInitializationSettings
  • added: field InitializationSettings.macOS: final MacOSInitializationSettings
  • added: field MacOSInitializationSettings.defaultPresentAlert: final bool
  • added: field MacOSInitializationSettings.defaultPresentBadge: final bool
  • added: field MacOSInitializationSettings.defaultPresentSound: final bool
  • added: field MacOSInitializationSettings.requestAlertPermission: final bool
  • added: field MacOSInitializationSettings.requestBadgePermission: final bool
  • added: field MacOSInitializationSettings.requestSoundPermission: final bool
  • added: field MacOSNotificationAttachment.filePath: final String
  • added: field MacOSNotificationAttachment.identifier: final String
  • added: field MacOSNotificationDetails.attachments: final List<MacOSNotificationAttachment>
  • added: field MacOSNotificationDetails.badgeNumber: final int
  • added: field MacOSNotificationDetails.presentAlert: final bool
  • added: field MacOSNotificationDetails.presentBadge: final bool
  • added: field MacOSNotificationDetails.presentSound: final bool
  • added: field MacOSNotificationDetails.sound: final String
  • added: field MacOSNotificationDetails.subtitle: final String
  • added: field NotificationDetails.macOS: final MacOSNotificationDetails
  • added: member AndroidNotificationChannelAction.createIfNotExists
  • added: member AndroidNotificationChannelAction.update
  • added: member AndroidNotificationStyle.bigPicture
  • added: member AndroidNotificationStyle.bigText
  • added: member AndroidNotificationStyle.defaultStyle
  • added: member AndroidNotificationStyle.inbox
  • added: member AndroidNotificationStyle.media
  • added: member AndroidNotificationStyle.messaging
  • added: member GroupAlertBehavior.all
  • added: member GroupAlertBehavior.children
  • added: member GroupAlertBehavior.summary
  • added: member NotificationVisibility.private
  • added: member NotificationVisibility.public
  • added: member NotificationVisibility.secret
  • added: member ScheduledNotificationRepeatFrequency.daily
  • added: member ScheduledNotificationRepeatFrequency.weekly
  • added: member UILocalNotificationDateInterpretation.absoluteTime
  • added: member UILocalNotificationDateInterpretation.wallClockTime
  • added: method AndroidFlutterLocalNotificationsPlugin.getActiveNotifications(): Future<List<ActiveNotification>>
  • added: method AndroidFlutterLocalNotificationsPlugin.zonedSchedule( int id, String title, String body, TZDateTime scheduledDate, AndroidNotificationDetails notificationDetails, { @required bool androidAllowWhileIdle, String payload, ScheduledNotificationRepeatFrequency scheduledNotificationRepeatFrequency, }): Future<void>
  • added: method FlutterLocalNotificationsPlugin.zonedSchedule( int id, String title, String body, TZDateTime scheduledDate, NotificationDetails notificationDetails, { @required UILocalNotificationDateInterpretation uiLocalNotificationDateInterpretation, @required bool androidAllowWhileIdle, String payload, ScheduledNotificationRepeatFrequency scheduledNotificationRepeatFrequency, }): Future<void>
  • added: method IOSFlutterLocalNotificationsPlugin.zonedSchedule( int id, String title, String body, TZDateTime scheduledDate, IOSNotificationDetails notificationDetails, { @required UILocalNotificationDateInterpretation uiLocalNotificationDateInterpretation, String payload, ScheduledNotificationRepeatFrequency scheduledNotificationRepeatFrequency, }): Future<void>
  • added: method MacOSFlutterLocalNotificationsPlugin.initialize( MacOSInitializationSettings initializationSettings, { SelectNotificationCallback onSelectNotification, }): Future<bool>
  • added: method MacOSFlutterLocalNotificationsPlugin.periodicallyShow( int id, String title, String body, RepeatInterval repeatInterval, { MacOSNotificationDetails notificationDetails, String payload, }): Future<void>
  • added: method MacOSFlutterLocalNotificationsPlugin.requestPermissions({ bool sound, bool alert, bool badge, }): Future<bool>
  • added: method MacOSFlutterLocalNotificationsPlugin.show( int id, String title, String body, { MacOSNotificationDetails notificationDetails, String payload, }): Future<void>
  • added: method MacOSFlutterLocalNotificationsPlugin.zonedSchedule( int id, String title, String body, TZDateTime scheduledDate, MacOSNotificationDetails notificationDetails, { String payload, ScheduledNotificationRepeatFrequency scheduledNotificationRepeatFrequency, }): Future<void>
  • added: static field Day.friday: const Day
  • added: static field Day.monday: const Day
  • added: static field Day.saturday: const Day
  • added: static field Day.sunday: const Day
  • added: static field Day.thursday: const Day
  • added: static field Day.tuesday: const Day
  • added: static field Day.wednesday: const Day
  • added: static field Importance.defaultImportance: const Importance
  • added: static field Importance.high: const Importance
  • added: static field Importance.low: const Importance
  • added: static field Importance.max: const Importance
  • added: static field Importance.min: const Importance
  • added: static field Importance.none: const Importance
  • added: static field Importance.unspecified: const Importance
  • added: static field Priority.defaultPriority: const Priority
  • added: static field Priority.high: const Priority
  • added: static field Priority.low: const Priority
  • added: static field Priority.max: const Priority
  • added: static field Priority.min: const Priority