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.onMessageFirebaseMessaging.onMessageOpenedApp 工作正常

您似乎将 FirebaseMessaging.onBackgroundMessage(notificationHandler)notificationHandler 函数放在 class 中。然而,这与 FlutterFire here 的官方文档相矛盾。您需要满足这些条件才能使此功能正常工作:

  1. 不能是匿名函数
  2. 它必须是顶级函数(例如,不是需要初始化的class方法)。

我对您的建议是,尝试将您正在使用的函数 notificationHandler 作为参数 放在您正在调用的 class 之外 FirebaseMessaging.onBackgroundMessage() 来自。它对我有用。