【问题标题】:Flutter - OneSignal - setNotificationOpenedHandler - OpenPageFlutter - OneSignal - setNotificationOpenedHandler - OpenPage
【发布时间】:2020-10-22 19:34:36
【问题描述】:

我有一个颤振应用程序。 我正在使用 OneSignal 推送通知。 我想在单击通知时打开一个页面。但是,第一次点击的时候,因为找不到上下文,所以没有页面跳转。点击通知时如何打开相关页面?

OneSignal.shared.setNotificationOpenedHandler((OSNotificationOpenedResult result) {
        try {
         Navigator.push(
            context,
            MaterialPageRoute(
              settings: RouteSettings(name: '/a'),
              builder: (context) => Settings(),
            ),
          );
        }
        catch(e) {
          print('e : ' + e.toString());
        }
        
      });

谢谢。

【问题讨论】:

    标签: flutter push-notification flutter-layout flutter-dependencies onesignal


    【解决方案1】:

    您可以为 MaterialApp 使用 GlobalKey,并在没有上下文的情况下使用路由器。如果在我的 http 控制器上发现未经授权的状态代码,我会使用它来将用户重定向到登录页面。

    首先我用密钥创建了一个类:

    class NavigatorKey {static final key = new GlobalKey<NavigatorState>();}
    

    然后在我的 MaterialApp 中:

    ...
    return MaterialApp(
        navigatorKey: key
    ...
    

    然后我导入类并像这样使用密钥:

    NavigatorKey.key.currentState.pushNamedAndRemoveUntil('/login', (r) => false);
    

    【讨论】:

      猜你喜欢
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 2019-10-05
      • 1970-01-01
      • 2019-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多