Skip to content

Upgrading flutter_local_notifications 4 to 5

Breaking4.0.1+2 → 5.0.0+4Breaking1Changed2Fixed1Other8

BreakingUpgrade verdict

1 breaking change.

  • The package now uses Dart's null safety. Some settings that used to accept null now require a value, but defaults are provided so existing behaviour is kept.
1 item needs code or config changes

Dart SDK requirement changed in 5.0.0-nullsafety.0: >=2.6.0 <3.0.0 → >=2.12.0-0 <3.0.0.

Breaking1
Migrates the package to null safety, making some formerly nullable arguments such as boolean values non-nullable with defaults that retain old behaviour.

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

  • changed: ctor AndroidNotificationDetails( this.channelId, this.channelName, this.channelDescription, { this.icon, this.importance = …, this.priority = …, this.styleInformation, this.playSound = …, this.sound, this.enableVibration = …, this.vibrationPattern, this.groupKey, this.setAsGroupSummary, this.groupAlertBehavior = …, this.autoCancel = …, this.ongoing, this.color, this.largeIcon, this.onlyAlertOnce,… → ctor AndroidNotificationDetails( this.channelId, this.channelName, this.channelDescription, { this.icon, this.importance = …, this.priority = …, this.styleInformation, this.playSound = …, this.sound, this.enableVibration = …, this.vibrationPattern, this.groupKey, this.setAsGroupSummary = …, this.groupAlertBehavior = …, this.autoCancel = …, this.ongoing = …, this.color, this.largeIcon, this.onlyAl…
  • changed: ctor Person({ this.bot, this.icon, this.important, this.key, this.name, this.uri, }) → ctor Person({ this.bot = …, this.icon, this.important = …, this.key, this.name, this.uri, })
  • changed: field ActiveNotification.body: final String → field ActiveNotification.body: final String?
  • changed: field ActiveNotification.channelId: final String → field ActiveNotification.channelId: final String?
  • changed: field ActiveNotification.title: final String → field ActiveNotification.title: final String?
  • changed: field AndroidNotificationChannel.groupId: final String → field AndroidNotificationChannel.groupId: final String?
  • changed: field AndroidNotificationChannel.ledColor: final Color → field AndroidNotificationChannel.ledColor: final Color?
  • changed: field AndroidNotificationChannel.sound: final AndroidNotificationSound → field AndroidNotificationChannel.sound: final AndroidNotificationSound?
  • changed: field AndroidNotificationChannel.vibrationPattern: final Int64List → field AndroidNotificationChannel.vibrationPattern: final Int64List?
  • changed: field AndroidNotificationChannelGroup.description: final String → field AndroidNotificationChannelGroup.description: final String?
  • changed: field AndroidNotificationDetails.additionalFlags: final Int32List → field AndroidNotificationDetails.additionalFlags: final Int32List?
  • changed: field AndroidNotificationDetails.category: final String → field AndroidNotificationDetails.category: final String?
  • changed: field AndroidNotificationDetails.color: final Color → field AndroidNotificationDetails.color: final Color?
  • changed: field AndroidNotificationDetails.groupKey: final String → field AndroidNotificationDetails.groupKey: final String?
  • changed: field AndroidNotificationDetails.icon: final String → field AndroidNotificationDetails.icon: final String?
  • changed: field AndroidNotificationDetails.largeIcon: final AndroidBitmap → field AndroidNotificationDetails.largeIcon: final AndroidBitmap?
  • changed: field AndroidNotificationDetails.ledColor: final Color → field AndroidNotificationDetails.ledColor: final Color?
  • changed: field AndroidNotificationDetails.ledOffMs: final int → field AndroidNotificationDetails.ledOffMs: final int?
  • changed: field AndroidNotificationDetails.ledOnMs: final int → field AndroidNotificationDetails.ledOnMs: final int?
  • changed: field AndroidNotificationDetails.shortcutId: final String → field AndroidNotificationDetails.shortcutId: final String?
  • changed: field AndroidNotificationDetails.sound: final AndroidNotificationSound → field AndroidNotificationDetails.sound: final AndroidNotificationSound?
  • changed: field AndroidNotificationDetails.styleInformation: final StyleInformation → field AndroidNotificationDetails.styleInformation: final StyleInformation?
  • changed: field AndroidNotificationDetails.subText: final String → field AndroidNotificationDetails.subText: final String?
  • changed: field AndroidNotificationDetails.tag: final String → field AndroidNotificationDetails.tag: final String?
  • changed: field AndroidNotificationDetails.ticker: final String → field AndroidNotificationDetails.ticker: final String?
  • changed: field AndroidNotificationDetails.timeoutAfter: final int → field AndroidNotificationDetails.timeoutAfter: final int?
  • changed: field AndroidNotificationDetails.vibrationPattern: final Int64List → field AndroidNotificationDetails.vibrationPattern: final Int64List?
  • changed: field AndroidNotificationDetails.visibility: final NotificationVisibility → field AndroidNotificationDetails.visibility: final NotificationVisibility?
  • changed: field AndroidNotificationDetails.when: final int → field AndroidNotificationDetails.when: final int?
  • changed: field BigPictureStyleInformation.contentTitle: final String → field BigPictureStyleInformation.contentTitle: final String?
  • changed: field BigPictureStyleInformation.largeIcon: final AndroidBitmap → field BigPictureStyleInformation.largeIcon: final AndroidBitmap?
  • changed: field BigPictureStyleInformation.summaryText: final String → field BigPictureStyleInformation.summaryText: final String?
  • changed: field BigTextStyleInformation.contentTitle: final String → field BigTextStyleInformation.contentTitle: final String?
  • changed: field BigTextStyleInformation.summaryText: final String → field BigTextStyleInformation.summaryText: final String?
  • changed: field IOSInitializationSettings.onDidReceiveLocalNotification: final DidReceiveLocalNotificationCallback → field IOSInitializationSettings.onDidReceiveLocalNotification: final DidReceiveLocalNotificationCallback?
  • changed: field IOSNotificationAttachment.identifier: final String → field IOSNotificationAttachment.identifier: final String?
  • changed: field IOSNotificationDetails.attachments: final List<IOSNotificationAttachment> → field IOSNotificationDetails.attachments: final List<IOSNotificationAttachment>?
  • changed: field IOSNotificationDetails.badgeNumber: final int → field IOSNotificationDetails.badgeNumber: final int?
  • changed: field IOSNotificationDetails.presentAlert: final bool → field IOSNotificationDetails.presentAlert: final bool?
  • changed: field IOSNotificationDetails.presentBadge: final bool → field IOSNotificationDetails.presentBadge: final bool?
  • changed: field IOSNotificationDetails.presentSound: final bool → field IOSNotificationDetails.presentSound: final bool?
  • changed: field IOSNotificationDetails.sound: final String → field IOSNotificationDetails.sound: final String?
  • changed: field IOSNotificationDetails.subtitle: final String → field IOSNotificationDetails.subtitle: final String?
  • changed: field IOSNotificationDetails.threadIdentifier: final String → field IOSNotificationDetails.threadIdentifier: final String?
  • changed: field Importance.value: final int → field Importance.value: final int?
  • changed: field InboxStyleInformation.contentTitle: final String → field InboxStyleInformation.contentTitle: final String?
  • changed: field InboxStyleInformation.summaryText: final String → field InboxStyleInformation.summaryText: final String?
  • changed: field InitializationSettings.android: final AndroidInitializationSettings → field InitializationSettings.android: final AndroidInitializationSettings?
  • changed: field InitializationSettings.iOS: final IOSInitializationSettings → field InitializationSettings.iOS: final IOSInitializationSettings?
  • changed: field InitializationSettings.macOS: final MacOSInitializationSettings → field InitializationSettings.macOS: final MacOSInitializationSettings?
  • changed: field MacOSNotificationAttachment.identifier: final String → field MacOSNotificationAttachment.identifier: final String?
  • changed: field MacOSNotificationDetails.attachments: final List<MacOSNotificationAttachment> → field MacOSNotificationDetails.attachments: final List<MacOSNotificationAttachment>?
  • changed: field MacOSNotificationDetails.badgeNumber: final int → field MacOSNotificationDetails.badgeNumber: final int?
  • changed: field MacOSNotificationDetails.presentAlert: final bool → field MacOSNotificationDetails.presentAlert: final bool?
  • changed: field MacOSNotificationDetails.presentBadge: final bool → field MacOSNotificationDetails.presentBadge: final bool?
  • changed: field MacOSNotificationDetails.presentSound: final bool → field MacOSNotificationDetails.presentSound: final bool?
  • changed: field MacOSNotificationDetails.sound: final String → field MacOSNotificationDetails.sound: final String?
  • changed: field MacOSNotificationDetails.subtitle: final String → field MacOSNotificationDetails.subtitle: final String?
  • changed: field MacOSNotificationDetails.threadIdentifier: final String → field MacOSNotificationDetails.threadIdentifier: final String?
  • changed: field Message.dataMimeType: final String → field Message.dataMimeType: final String?
  • changed: field Message.dataUri: final String → field Message.dataUri: final String?
  • changed: field Message.person: final Person → field Message.person: final Person?
  • changed: field MessagingStyleInformation.conversationTitle: final String → field MessagingStyleInformation.conversationTitle: final String?
  • changed: field MessagingStyleInformation.groupConversation: final bool → field MessagingStyleInformation.groupConversation: final bool?
  • changed: field MessagingStyleInformation.messages: final List<Message> → field MessagingStyleInformation.messages: final List<Message>?
  • changed: field NotificationDetails.android: final AndroidNotificationDetails → field NotificationDetails.android: final AndroidNotificationDetails?
  • changed: field NotificationDetails.iOS: final IOSNotificationDetails → field NotificationDetails.iOS: final IOSNotificationDetails?
  • changed: field NotificationDetails.macOS: final MacOSNotificationDetails → field NotificationDetails.macOS: final MacOSNotificationDetails?
  • changed: field Person.icon: final AndroidIcon → field Person.icon: final AndroidIcon?
  • changed: field Person.key: final String → field Person.key: final String?
  • changed: field Person.name: final String → field Person.name: final String?
  • changed: field Person.uri: final String → field Person.uri: final String?
  • changed: method AndroidFlutterLocalNotificationsPlugin.cancel(int id, {String tag}): Future<void> → method AndroidFlutterLocalNotificationsPlugin.cancel(int id, {String? tag}): Future<void>
  • changed: method AndroidFlutterLocalNotificationsPlugin.getActiveNotifications(): Future<List<ActiveNotification>> → method AndroidFlutterLocalNotificationsPlugin.getActiveNotifications(): Future<List<ActiveNotification>?>
  • changed: method AndroidFlutterLocalNotificationsPlugin.getNotificationChannels(): Future<List<AndroidNotificationChannel>> → method AndroidFlutterLocalNotificationsPlugin.getNotificationChannels(): Future<List<AndroidNotificationChannel>?>
  • 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, bool androidAllowWhileIdle = …, }): 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 AndroidFlutterLocalNotificationsPlugin.zonedSchedule( int id, String title, String body, TZDateTime scheduledDate, AndroidNotificationDetails notificationDetails, { @required bool androidAllowWhileIdle, String payload, DateTimeComponents matchDateTimeComponents, }): Future<void> → method AndroidFlutterLocalNotificationsPlugin.zonedSchedule( int id, String? title, String? body, TZDateTime scheduledDate, AndroidNotificationDetails? notificationDetails, { required bool androidAllowWhileIdle, String? payload, DateTimeComponents? matchDateTimeComponents, }): Future<void>
  • changed: method FlutterLocalNotificationsPlugin.cancel(int id, {String tag}): Future<void> → method FlutterLocalNotificationsPlugin.cancel(int id, {String? tag}): Future<void>
  • changed: method FlutterLocalNotificationsPlugin.getNotificationAppLaunchDetails(): Future<NotificationAppLaunchDetails> → method FlutterLocalNotificationsPlugin.getNotificationAppLaunchDetails(): Future<NotificationAppLaunchDetails?>
  • 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, bool androidAllowWhileIdle = …, }): Future<void> → method FlutterLocalNotificationsPlugin.periodicallyShow( int id, String? title, String? body, RepeatInterval repeatInterval, NotificationDetails notificationDetails, { String? payload, bool androidAllowWhileIdle = …, }): Future<void>
  • changed: method FlutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation< T extends FlutterLocalNotificationsPlatform>(): T → method FlutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation< T extends FlutterLocalNotificationsPlatform>(): T?
  • 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 FlutterLocalNotificationsPlugin.zonedSchedule( int id, String title, String body, TZDateTime scheduledDate, NotificationDetails notificationDetails, { @required UILocalNotificationDateInterpretation uiLocalNotificationDateInterpretation, @required bool androidAllowWhileIdle, String payload, DateTimeComponents matchDateTimeComponents, }): Future<void> → method FlutterLocalNotificationsPlugin.zonedSchedule( int id, String? title, String? body, TZDateTime scheduledDate, NotificationDetails notificationDetails, { required UILocalNotificationDateInterpretation uiLocalNotificationDateInterpretation, required bool androidAllowWhileIdle, String? payload, DateTimeComponents? matchDateTimeComponents, }): 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>
  • changed: method IOSFlutterLocalNotificationsPlugin.zonedSchedule( int id, String title, String body, TZDateTime scheduledDate, IOSNotificationDetails notificationDetails, { @required UILocalNotificationDateInterpretation uiLocalNotificationDateInterpretation, String payload, DateTimeComponents matchDateTimeComponents, }): Future<void> → method IOSFlutterLocalNotificationsPlugin.zonedSchedule( int id, String? title, String? body, TZDateTime scheduledDate, IOSNotificationDetails? notificationDetails, { required UILocalNotificationDateInterpretation uiLocalNotificationDateInterpretation, String? payload, DateTimeComponents? matchDateTimeComponents, }): Future<void>
  • changed: method MacOSFlutterLocalNotificationsPlugin.initialize( MacOSInitializationSettings initializationSettings, { SelectNotificationCallback onSelectNotification, }): Future<bool> → method MacOSFlutterLocalNotificationsPlugin.initialize( MacOSInitializationSettings initializationSettings, { SelectNotificationCallback? onSelectNotification, }): Future<bool?>
  • changed: method MacOSFlutterLocalNotificationsPlugin.periodicallyShow( int id, String title, String body, RepeatInterval repeatInterval, { MacOSNotificationDetails notificationDetails, String payload, }): Future<void> → method MacOSFlutterLocalNotificationsPlugin.periodicallyShow( int id, String? title, String? body, RepeatInterval repeatInterval, { MacOSNotificationDetails? notificationDetails, String? payload, }): Future<void>
  • changed: method MacOSFlutterLocalNotificationsPlugin.requestPermissions({ bool sound, bool alert, bool badge, }): Future<bool> → method MacOSFlutterLocalNotificationsPlugin.requestPermissions({ bool? sound, bool? alert, bool? badge, }): Future<bool?>
  • changed: method MacOSFlutterLocalNotificationsPlugin.show( int id, String title, String body, { MacOSNotificationDetails notificationDetails, String payload, }): Future<void> → method MacOSFlutterLocalNotificationsPlugin.show( int id, String? title, String? body, { MacOSNotificationDetails? notificationDetails, String? payload, }): Future<void>
  • changed: method MacOSFlutterLocalNotificationsPlugin.zonedSchedule( int id, String title, String body, TZDateTime scheduledDate, MacOSNotificationDetails notificationDetails, { String payload, DateTimeComponents matchDateTimeComponents, }): Future<void> → method MacOSFlutterLocalNotificationsPlugin.zonedSchedule( int id, String? title, String? body, TZDateTime scheduledDate, MacOSNotificationDetails? notificationDetails, { String? payload, DateTimeComponents? matchDateTimeComponents, }): Future<void>
  • changed: typedef DidReceiveLocalNotificationCallback = Future<dynamic> Function( int id, String title, String body, String payload) → typedef DidReceiveLocalNotificationCallback = Future<dynamic> Function( int id, String? title, String? body, String? payload)
  • changed: typedef SelectNotificationCallback = Future<dynamic> Function(String payload) → typedef SelectNotificationCallback = Future<dynamic> Function(String? payload)