'Flutter onSelectNotification method doesn't show payload when app closed

I'm using flutterlocalnotifications package and FCM to send notifications to my users. Everything working perfectly. I can show notifications to my users when my app is in the background, foreground, or closed. I can reach payload value in foreground and background, but when the app is killed I can't reach payload anymore. I test in catlog but there isn't any print in the onSelectNotification.

How can reach this payload?

This is my notification handler class

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';

AndroidNotificationChannel channel = AndroidNotificationChannel(
  'high_importance_channel', // id
  'High Importance Notifications', // title
  'This channel is used for important notifications.', // description
  importance: Importance.high,
);
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
    FlutterLocalNotificationsPlugin();

Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  // await Firebase.initializeApp();
  //Bildirim geldiği anda datayı elde ettiğimiz alan
  final dynamic data = message.data;
  print('Data in background : ${data.toString()}');
  NotificationHandler.showNotification(data);
}

class NotificationHandler {
  final FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance;
  static final NotificationHandler _singleton = NotificationHandler._internal();
  factory NotificationHandler() {
    return _singleton;
  }
  NotificationHandler._internal();
  BuildContext myContext;

  initializeFCMNotifications(BuildContext context) async {
    await _firebaseMessaging.setForegroundNotificationPresentationOptions(
        alert: true, badge: true, sound: true);
    var initializationSettingsAndroid =
        AndroidInitializationSettings('app_icon');
    var initializationSettingsIOS = IOSInitializationSettings(
        onDidReceiveLocalNotification: onDidReceiveLocalNotification);
    var initializationSettings = InitializationSettings(
        android: initializationSettingsAndroid, iOS: initializationSettingsIOS);
    await flutterLocalNotificationsPlugin.initialize(initializationSettings,
        onSelectNotification: onSelectNotification);
    await _firebaseMessaging.subscribeToTopic("all");

    await FirebaseMessaging.instance
        .getInitialMessage()
        .then((RemoteMessage message) {
      if (message != null) {
        print('initialmessage tetiklendi : ' + message.data.toString());
      }
    });

    FirebaseMessaging.onMessage.listen((RemoteMessage message) {
      var notification = message.notification;
      var android = message.notification?.android;

      print('ONMESSAGE ÇALIŞTI');
      print('onmessage tetiklendi data : ' +
          message.data['message'] +
          ' title ' +
          message.data['title']);
      showNotification(message.data);
    });
    FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
    FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
      print('Onmessageopened  : ' + message.data.toString());
    });
  }

  static void showNotification(Map<String, dynamic> data) async {
    const androidPlatformChannelSpecifics = AndroidNotificationDetails(
        '1234', 'Yeni Mesaj', 'your channel description',
        importance: Importance.max, priority: Priority.high, ticker: 'ticker');
    const IOSPlatformChannelSpecifics = IOSNotificationDetails();
    const platformChannelSpecifics = NotificationDetails(
        android: androidPlatformChannelSpecifics,
        iOS: IOSPlatformChannelSpecifics);

    await flutterLocalNotificationsPlugin.show(
        0, data['title'], data['message'], platformChannelSpecifics,
        payload: 'The value when notification tapped');
  }

  Future onSelectNotification(String payload) async {
    if (payload != null) {
      debugPrint('notification payload : $payload');
    }
  }

  Future onDidReceiveLocalNotification(
      int id, String title, String body, String payload) {}
} 

and these are the versions of the packages I use


  firebase_messaging: ^9.1.1
  flutter_local_notifications: ^5.0.0+1



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source