flutter - Flutter - OneSignal - setNotificationOpenedHandler - OpenPage
问题描述
我有一个颤振应用程序。我正在使用 OneSignal 推送通知。单击通知时,我想打开一个页面。但是,第一次点击的时候,因为找不到上下文,所以没有页面跳转。点击通知时如何打开相关页面?
OneSignal.shared.setNotificationOpenedHandler((OSNotificationOpenedResult result) {
try {
Navigator.push(
context,
MaterialPageRoute(
settings: RouteSettings(name: '/a'),
builder: (context) => Settings(),
),
);
}
catch(e) {
print('e : ' + e.toString());
}
});
谢谢你。
解决方案
您可以为 MaterialApp 使用 GlobalKey 并在没有上下文的情况下使用路由器。如果在我的 http 控制器上发现未经授权的状态代码,我会使用它将用户重定向到登录页面。
首先,我使用密钥创建了一个类:
class NavigatorKey {static final key = new GlobalKey<NavigatorState>();}
然后在我的 MaterialApp 中:
...
return MaterialApp(
navigatorKey: key
...
然后我导入类并使用这样的密钥:
NavigatorKey.key.currentState.pushNamedAndRemoveUntil('/login', (r) => false);
推荐阅读
- connection - 在 Talend 中看不到雪花表
- c# - [BsonId] 和 BsonClassMap.MapIdField 的区别
- c# - Unity 3D如何将Vector3投影到平面上或在特定平面中的两个Vector3之间获得角度?
- apache - APACHE 反向代理中的 Web 套接字
- gensim - 仅为 infer_vector 加载不带 docs 向量的 Doc2Vec
- python - 为什么 sklearn 的 LinearRegression 中的 fit 方法只接受 x 值的 2D 数组,而 y 值的 1D 数组?
- excel - 将 LEFT 函数插入 IF 公式
- javascript - Excel 导出在 jquery 的 Kendo ui 中不起作用
- linux - 在 Linux 上格式化 ps STIME
- javascript - React - 使用 react-numeric-input 在本地存储中保持状态