Flutter FCM调用onBackgroundMessage触发空检查运算符空值异常如何解决
问题原因
出现该Null check operator used on a null value报错的核心原因有两个:
- 你给
FirebaseMessaging.onBackgroundMessage传入的是一层匿名闭包(message) => myBackgroundMessageHandler(message),不是直接的函数引用。Firebase后台消息处理运行在独立Isolate中,要求传入的处理函数必须是可序列化的顶层静态函数,闭包属于当前上下文的局部对象,无法被Isolate识别,就会触发内部空值异常。 - 后台消息处理函数的返回类型要求为
Future<void>,你当前定义的返回类型是Future<dynamic>,不符合类型约束。
修复方案
按如下要求调整代码即可:
- 保持
myBackgroundMessageHandler为顶层函数(不要放在任何类、函数内部),将返回类型修改为Future<void> - 调用
onBackgroundMessage时直接传入函数引用,不要嵌套额外的匿名闭包
修复后的完整代码如下:
Future<void> myBackgroundMessageHandler(RemoteMessage message) async { print('backgroundMessage: message => ${message.toString()}'); } void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); FirebaseMessaging.onBackgroundMessage(myBackgroundMessageHandler); // 此处补充你原有启动应用的代码,比如runApp(你的应用实例) }
内容的提问来源于stack exchange,提问作者scott lee
相关产品推荐
相关产品推荐

