在我的应用中,我已经配置了Firebase推送通知,并且具有以下配置代码。它在我在initState
中实现此代码的页面上显示了onMessage。我在应用程序中有多页表单字段,并且希望在应用程序中的任何页面上显示警报。有没有什么方法可以在每个屏幕上显示警报而无需在每个页面上的initState
中调用该函数?
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
showDialog(
context: context,
builder: (context) => AlertDialog(
content: ListTile(
title: Text(message['notification']['title']),
subtitle: Text(message['notification']['body']),
),
actions: <Widget>[
FlatButton(
child: Text('Ok'),
onPressed: () => Navigator.of(context).pop(),
),
],
),
);
print("onMessage: $message");
final notification = message['notification'];
setState(() {
messages.add(Message(
title: notification['title'], body: notification['body']));
});
},
onLaunch: (Map<String, dynamic> message) async {
print("onLaunch: $message");
final notification = message['data'];
setState(
() {
messages.add(
Message(
title: '${notification['title']}',
body: '${notification['body']}',
),
);
},
);
Navigator.pushNamed(context, '/notify');
},
答案 0 :(得分:1)
您仅应致电FCM配置一次,否则您将遇到问题(无论如何,我的经验)。如果您在主屏幕的initState中调用.configure,则树(下级)下方,您导航并从其返回的任何页面都将通过onMessage回调对FCM通知做出反应。