Flutter FCM onBackgroundMessage 处理程序给出空检查错误
Flutter FCM onBackgroundMessage handler gives null check error
我正在尝试为我的应用实现通知,但是在初始化通知时 FirebaseMessaging.onBackgroundMessage(notificationHandler)
出现错误
错误:
E/flutter (28265): [错误:flutter/lib/ui/ui_dart_state.cc(186)] 未处理的异常:空检查运算符用于空值
E/flutter (28265): #0 MethodChannelFirebaseMessaging.registerBackgroundMessageHandler (包:firebase_messaging_platform_interface/src/method_channel/method_channel_messaging.dart:173:53)
E/flutter (28265): #1 FirebaseMessagingPlatform.onBackgroundMessage= (包:firebase_messaging_platform_interface/src/platform_interface/platform_interface_messaging.dart:108:16)
E/flutter (28265): #2 FirebaseMessaging.onBackgroundMessage (包:firebase_messaging/src/messaging.dart:100:31)
通知处理程序:
Future<void> notificationHandler(RemoteMessage message) async {
/// do sth with data
}
注意:FirebaseMessaging.onMessage
和 FirebaseMessaging.onMessageOpenedApp
工作正常
您似乎将 FirebaseMessaging.onBackgroundMessage(notificationHandler)
与 notificationHandler
函数放在 class 中。然而,这与 FlutterFire here 的官方文档相矛盾。您需要满足这些条件才能使此功能正常工作:
- 不能是匿名函数
- 它必须是顶级函数(例如,不是需要初始化的class方法)。
我对您的建议是,尝试将您正在使用的函数 notificationHandler
作为参数 放在您正在调用的 class 之外 FirebaseMessaging.onBackgroundMessage()
来自。它对我有用。
我正在尝试为我的应用实现通知,但是在初始化通知时 FirebaseMessaging.onBackgroundMessage(notificationHandler)
出现错误
错误:
E/flutter (28265): [错误:flutter/lib/ui/ui_dart_state.cc(186)] 未处理的异常:空检查运算符用于空值 E/flutter (28265): #0 MethodChannelFirebaseMessaging.registerBackgroundMessageHandler (包:firebase_messaging_platform_interface/src/method_channel/method_channel_messaging.dart:173:53) E/flutter (28265): #1 FirebaseMessagingPlatform.onBackgroundMessage= (包:firebase_messaging_platform_interface/src/platform_interface/platform_interface_messaging.dart:108:16) E/flutter (28265): #2 FirebaseMessaging.onBackgroundMessage (包:firebase_messaging/src/messaging.dart:100:31)
通知处理程序:
Future<void> notificationHandler(RemoteMessage message) async {
/// do sth with data
}
注意:FirebaseMessaging.onMessage
和 FirebaseMessaging.onMessageOpenedApp
工作正常
您似乎将 FirebaseMessaging.onBackgroundMessage(notificationHandler)
与 notificationHandler
函数放在 class 中。然而,这与 FlutterFire here 的官方文档相矛盾。您需要满足这些条件才能使此功能正常工作:
- 不能是匿名函数
- 它必须是顶级函数(例如,不是需要初始化的class方法)。
我对您的建议是,尝试将您正在使用的函数 notificationHandler
作为参数 放在您正在调用的 class 之外 FirebaseMessaging.onBackgroundMessage()
来自。它对我有用。