【发布时间】:2020-04-22 22:48:10
【问题描述】:
我正在使用 Firebase 云消息传递通知,当我在应用程序内收到通知时,我想显示一个对话框或快餐栏,我的问题是我正在初始化我的小部件树顶部的 firebase 配置(应用程序启动后的启动画面)
_fireBaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
dynamic data = message['data'];
................ // Adding a snackbar/alertdialog here doesn't work
},
);
显然,如果我设置了一个对话框或小吃栏,它不会显示,因为我需要当前页面的上下文,有没有办法获取当前上下文?
我也尝试将它放在启动屏幕的构建小部件中,但是一旦我在另一个页面上,对话框仍然没有显示。
@override
Widget build(BuildContext context) {
_fireBaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
print("onMessage: $message");
dynamic data = message['data'];
if (data['id'] == '1') {
newPro = true;
} else if (data['id'] == '2') {
print("THIS WORKS!!!");
showDialog(
context: context,
builder: (context) => AlertDialog(
content: ListTile(
title: Text("TEST"),
subtitle: Text("TEST"),
),
actions: <Widget>[
FlatButton(
child: Text("OK"),
onPressed: () => Navigator.pop(context),
)
],
));
}
},
);
【问题讨论】:
标签: firebase flutter firebase-cloud-messaging