Upgrading flutter_local_notifications 4 to 5
Breaking4.0.1+2 → 5.0.0+4Breaking1Changed2Fixed1Other8
BreakingUpgrade verdict
1 breaking change.
In plain terms
- 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.
Must act 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.
What you must change
Breaking1
Migrates the package to null safety, making some formerly nullable arguments such as boolean values non-nullable with defaults that retain old behaviour.
API changes
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)