hello am trying to navigate to a second screen after clicking on notification using flutter_local_notifications https://pub.dev/packages/flutter_local_notifications

final BehaviorSubject<String?> selectNotificationSubject =
      BehaviorSubject<String?>();
  final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
      FlutterLocalNotificationsPlugin();
  void initializeNotifcations() async {
    var initialzationSettings =
        InitializationSettings(android: initializationSettingsAndroid);

    await flutterLocalNotificationsPlugin.initialize(initialzationSettings,
        onDidReceiveBackgroundNotificationResponse:
            (NotificationResponse notificationResponse) {
      selectNotificationSubject.add(notificationResponse.payload);
    });

    flutterLocalNotificationsPlugin
        .resolvePlatformSpecificImplementation<
            AndroidFlutterLocalNotificationsPlugin>()!
        .requestPermission();
  }

  void configureDidReceiveLocalNotificationSubject() {
    print('test01');
    selectNotificationSubject.stream.listen((String? payload) async {
      print('test02');
    });
  }

not listining to the stream if you got an example of how to make it with the best practice it will help


Solution 1: Shimaa Yasser

void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
await initNotification();

FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler; ... }

Future initNotification() async {

var initializationSettingsAndroid = new AndroidInitializationSettings("@drawable/kin_removebg"); var initializationSettingsIOS = new IOSInitializationSettings( requestAlertPermission: false, requestBadgePermission: false, requestSoundPermission: false, onDidReceiveLocalNotification: (int? id, String? title, String? body, String? payload) async {});

var initializationSettings = new InitializationSettings( android: initializationSettingsAndroid, iOS: initializationSettingsIOS);

final NotificationAppLaunchDetails? notificationAppLaunchDetails = await flutterLocalNotificationsPlugin.getNotificationAppLaunchDetails(); final didNotificationLaunchApp = notificationAppLaunchDetails?.didNotificationLaunchApp ?? false;

if (didNotificationLaunchApp) { var payload = notificationAppLaunchDetails!.payload; onSelectNotification(payload); } else { await flutterLocalNotificationsPlugin.initialize( initializationSettings, onDidReceiveNotificationResponse:onSelectNotification, onDidReceiveBackgroundNotificationResponse: onSelectNotification, } }

onSelectNotification(NotificationResponse notificationResponse) async {

var payloadData = jsonDecode(notificationResponse.payload); print("payload $payload"); if(payloadData["type"]=="something" && payloadData["id"]!="something"){ Navigator.of(navigatorKey.currentContext!).push( MaterialPageRoute( builder: (context) => SomethingScreen(id: payloadData["id"],))); }

}


Solution 2: rasityilmaz

flutterLocalNotificationsPlugin
.getNotificationAppLaunchDetails()
.then((value) {
.then((value) async {
if (value.didNotificationLaunchApp) {
if (value.payload != null) {
// do something
}