【发布时间】:2021-08-09 05:36:58
【问题描述】:
我有以下基本示例,它似乎无法正常工作:
pubspec.yaml:
firebase_messaging: ^10.0.0
FcmService.dart
StreamSubscription fcmListener;
void init() {
fcmListener = FirebaseMessaging.onMessage.listen((RemoteMessage message) {
// do stuff
});
}
void dispose() {
print('SUBSCRIPTION canceled');
fcmListener.cancel()
}
App.dart
void init() {
fcmService.init();
// other inits()
}
void dispose() {
print('EVERYTHING disposed');
fcmService.dispose();
// other disposes()
}
问题
在我登录到我的应用程序后,App.dart 的init() 方法被调用,一切都设置正确。 FCM 服务一切正常。当我注销应用程序时,App.dart 的dispose() 方法被调用,应用程序重定向到 Login.dart。正确的日志是EVERYTHING disposed 和SUBSCRIPTION canceled。
但是,如果我再次登录(没有热重新加载应用程序),我会收到以下关于 fcmListener = FirebaseMessaging.onMessage.listen() 的错误消息
Unhandled Exception: Bad state: Cannot add new events while doing an addStream。尽管如此,FCMService 仍然按预期工作。
这只发生在他们不久前重写的新 firebase_messaging 中。我在以前版本的 firebase_messaging 中使用了相同的代码,并且没有发生此异常。
我错过了什么吗?
【问题讨论】:
标签: flutter firebase-cloud-messaging