Как перейти к конкретному экрану c при получении уведомления во флаттере? - PullRequest
0 голосов
/ 21 июня 2020

Я получаю два типа уведомлений в моем приложении flutter с firebase в качестве бэкэнда, успешно реализованных FLUTTER_NOTIFICATION_CLICK в облачной функции для обеспечения функциональности при нажатии,

Теперь я хочу, чтобы их было два вид различных уведомлений, и я хочу, чтобы навигация по конкретному экрану c соответствовала значению уведомления. Как мне это сделать?

Ниже приведен код, который я использую data payloads и flutter code

PAYLOAD 1

const payload = {

              notification : {
                  title: item title,
                  body: notificaionmessage,
                  icon:"default"
                              },

                              data: {
                                       click_action: 'FLUTTER_NOTIFICATION_CLICK',
                                       notification_id: notification_id,
                                       //senderAvatarURL: messageRecieverSenderAvatar,
                                       category: 'default'
                                     }
          };

PAYLOAD 2

const payload = {
                    notification: {
                      title: `NOTIFICATION2 `,
                      body: contentMessage,
                      badge: '1',
                      sound: 'default'
                    },
                    data: {
                             click_action: 'FLUTTER_NOTIFICATION_CLICK',
                             notification2: notificationid2,
                             //senderAvatarURL: messageRecieverSenderAvatar,
                             category: 'default'
                           }
                  }

КОД ДЛЯ ОБРАБОТКИ УВЕДОМЛЕНИЯ

firebaseMessaging.configure(onMessage: (Map<String, dynamic> message) {
      print('onMessage: $message');
      Platform.isAndroid ? showNotification(message['notification']) : showNotification(message['aps']['alert']);
      Navigator.push(context, MaterialPageRoute(builder: (context)=> SCREEN1()));
      return;
    }, onResume: (Map<String, dynamic> message) {
      print('onResume: $message');
      Navigator.push(context, MaterialPageRoute(builder: (context)=> SCREEN1()));
      return;
    }, onLaunch: (Map<String, dynamic> message) {
      print('onLaunch: $message');
      Navigator.push(context, MaterialPageRoute(builder: (context)=> SCREEN1()));
      return;
    });

Как указано выше, навигация настроена, но я хочу, чтобы она была на разные экраны в зависимости от полезной нагрузки, например PAYLOAD 1 to SCREEN1 и PAYLOAD 2 to SCREEN 2

Как мне с этим справиться?

1 Ответ

0 голосов
/ 21 июня 2020

Вы можете сделать это разными способами.

например, вы можете проверить

click_action: 'Move_To_Screen1'

if (message['data']['click_action']=='Move_To_Screen1') 
Navigator.push(context, MaterialPageRoute(builder: (context)=> SCREEN1()));
else if (message['data']['click_action']=='Move_To_Screen2') 
Navigator.push(context, MaterialPageRoute(builder: (context)=> SCREEN2()));

Надеюсь, что это поможет.

...