flutter - 有条件的颤振前景通知
问题描述
我使用flutter null_safety 和firebase_messaging 实现了一个简单的聊天功能。
我创建了一个 notification.dart 服务来检查消息。此服务在主 dart 中调用。
当应用程序处于前台时,通知不会显示,所以我考虑使用看起来很容易使用的 overlay_support。
我现在的问题是,是否有可能检查我的实际屏幕.. 例如,我想显示一条新的聊天消息正在传入.. 但不是当我在实际屏幕上时,用户实际在写.. 但是应用程序中的其他任何地方
_firebaseMessaging.requestPermission();
RemoteMessage message = await _firebaseMessaging.getInitialMessage();
if (message != null) {
handleIncomingNavigation(message);
}
FirebaseMessaging.onBackgroundMessage((RemoteMessage message) async {
handleIncomingNavigation(message);
});
*************
//Listen for incoming notifications in foreground
FirebaseMessaging.onMessage.listen((RemoteMessage message) async {
//how to check here the current route?
if(actualpath != ??) {
showSimpleNotification(
Text("New chat message from $user"),
background: Colors.white
);
} else {
//Do nothing
});
**************
//Listen for incoming notifications from background
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
handleIncomingNavigation(message);
});
更新:在我的 main.dart 中,我设置了 Navigatorkey:
MaterialApp(
title: 'App',
theme: ThemeData(primarySwatch: Colors.green),
home: HomePage(),
navigatorKey: NavigationService.instance.navigationKey,
)
我的服务中没有上下文,所以我尝试使用 Navigatorkey:
//Listen for incoming notifications in foreground
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
var route =
ModalRoute.of(NavigationService.instance.navigationKey.currentContext).settings.name;
print(route);
});
但这总是崩溃..
解决方案
推荐阅读
- php - 无法使用 Facebook Graph API v3.0 删除群组帖子
- javascript - 在 Angular HTTP 请求后编辑接收到的对象
- c++ - C++ 向量超出范围异常
- python - 将系列合并到单个输出 - 熊猫
- html - HTML 标记是否应该有一个归因于下载属性的字符串?
- codeigniter - 通过在 codeigniter 中单击下一个和上一个来检索数据
- android - Android - ImageView 空白(仅限 xml)
- java - 将 Java 连接到本地 SQL 数据库
- r - 查找包含一系列字符的字符串,而不管 r 中的顺序如何
- sql-server - 转换和重复多行