Как перемещаться без контекста в приложении флаттера? - PullRequest
0 голосов
/ 24 октября 2018

У меня есть приложение, которое получает push-уведомления с помощью OneSignal.Я сделал обработчик открытого уведомления, который должен открывать определенный экран при щелчке уведомления.Как я могу перейти к экрану без контекста.или как я могу открыть конкретный экран при запуске приложения.Мой код:

OneSignal.shared.setNotificationOpenedHandler((notification) {
  var notify = notification.notification.payload.additionalData;
  if (notify["type"] == "message") {
    Navigator.of(context).push(
      MaterialPageRoute(
        builder: (context) => DM(user: notify['id']),
      ),
    );
  }
  if (notify["type"] == "user") {
    Navigator.of(context).push(
      MaterialPageRoute(
        builder: (context) => Profileo(notify["id"]),
      ),
    );
  }
  if (notify["type"] == "post") {
    Navigator.of(context).push(
      MaterialPageRoute(
        builder: (context) => ViewPost(notify["id"]),
      ),
    );
  }
});

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

Пожалуйста, помогите !!

1 Ответ

0 голосов
/ 20 ноября 2018

Посмотрите на это здесь: https://github.com/brianegan/flutter_redux/issues/5#issuecomment-361215074

Вы можете установить глобальный ключ для вашей навигации:

final GlobalKey<NavigatorState> navigatorKey = new GlobalKey<NavigatorState>();

Передать его в MaterialApp:

new MaterialApp(
      title: 'MyApp',
      onGenerateRoute: generateRoute,
      navigatorKey: key,
    );

Пуш-маршруты:

navigatorKey.currentState.pushNamed('/someRoute');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...