我正在使用FirebaseMessaging向我的Flutter应用发送推送通知 . 这些通知包含聊天详细信息
如果应用程序当前处于活动状态且用户位于聊天页面,则应更新页面以显示新消息(我可以处理) .
如果应用程序位于任何其他页面上,则应显示本地通知/吐司 .
我的问题是,如何将通知转发到聊天页面?
我在根页面上监听FirebaseMessaging . 我可以使用 ModalRoute.of(context).isCurrent
来确定通知进入时根页是否是当前页面 . 当活动页面是活动页面时,如何将通知广播到聊天页面?
在Swift中,我使用NotificationCenter从应用代表发送数据,聊天页面会监听它 . 我希望Flutter能有类似的东西 .
1 回答
我找到了一个解决方案,我希望它可以帮助处于类似情况的其他人 .
我找到了包Dart Message Bus
它可以完成我需要的一切,并且可以更轻松地处理Streams . 我确实需要添加一个额外的方法(参见结尾) .
由于说明有点神秘,这就是我如何使它工作 .
处置方法非常重要,否则听众会继续倾听并引发问题 .
如果您需要验证订阅者实际正在侦听,请修改调用和侦听方法:
我不得不添加一个额外的方法,以便在不再需要时关闭发布流 .
添加到包源中的message_bus.dart中的类MessageBus的末尾:
然后你可以处理流:
我最终将globalBus变量放在库文件中 . 然后在main.dart和chat.dart中导入该库,并从chat.dart中删除import main.dart .