Как открыть приложение Flutter из фона с помощью сообщения данных FCM +? - PullRequest
0 голосов
/ 01 апреля 2020

Я реализовал Google FCM в своем приложении и успешно получаю сообщения на всех 4 обработчиках сообщений (onMessage, onLaunch, onResume и onBackground). Моя основная функциональность заключается в переходе на определенный экран приложения. Я реализую это с помощью клавиши NavigatorState , который отлично работает для 3 из 4 обработчиков, кроме onBackground. Когда я отправляю сообщение с данными в мое приложение, запускается onBackground, и когда он пытается перейти к указанному экрану c, я получаю эту ошибку:

I / флаттер (17050): NoSuchMethodError: Метод 'pu sh' был вызван для нуля.

I / флаттер (17050): приемник: ноль

I / флаттер (17050): Пробный вызов: pu sh (Экземпляр 'MaterialPageRoute')

Мой главный вопрос в том, есть ли альтернативный способ перехода на экран, отличный от Navigator.of (context ) или GlobalKey (NavigatorState), где состояние навигации приложения сохраняется даже после минимизации приложения?

1 Ответ

0 голосов
/ 01 апреля 2020

Вам просто нужно поместить некоторую переменную в полезную нагрузку уведомлений, чтобы определить, куда вы хотите, чтобы ваше приложение перемещалось, и проверить это, как показано ниже в ваших onResume и onLaunch

onResume: (Map<String, dynamic> message) async {

String type = message['data']['type'];

        if(type != null){
          if(type == 'chat'){
            Navigator.push(context, MaterialPageRoute(builder: (context)=> YourPageRoute()));

          }
     }
}




onLaunch: (Map<String, dynamic> message) async {

String type = message['data']['type'];

        if(type != null){
          if(type == 'chat'){
            Navigator.push(context, MaterialPageRoute(builder: (context)=> YourPageRoute()));
          }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...