当前位置: 首页 > 知识库问答 >
问题:

颤振:FCM未处理的异常:对空值使用空检查运算符

黄聪
2023-03-14

E/flatter(26872):[错误:flatter/lib/ui/ui\u dart\u state.cc(199)]未处理的异常:在空值E/flatter(26872)上使用的空检查运算符:#0
MethodChannelFirebaseMessaging。registerBackgroundMessageHandler(包:firebase\u messaging\u platform\u interface/src/method\u channel/method\u channel\u messaging.dart:173:53)E/Flatter(26872):#1
FirebaseMessagingPlatform。onBackgroundMessage=(包:firebase\u messaging\u platform\u interface/src/platform\u interface/platform\u interface\u messaging。dart:108:16)

// Background Messaging Set Up
    Future<void> _firebaseMessagingBackgroundHandler(
        RemoteMessage message) async {
      print('background message');
    }

    FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
    runApp(....)

我在Android系统上收到此代码的错误。一切正常,除非应用程序终止。

Android上的工作原理

  • 终止时的通知,在后台和前台
  • 仅在前台显示日期

什么在Android上不起作用:

  • 仅当终止并在后台时才显示数据

什么适用于iOS:

  • 终止时的通知,在后台和前台
  • 仅在前台显示日期

什么对iOS不起作用:

  • 数据仅在终止时

我不知道为什么我在Android系统上得到空值错误,我如何解决这个问题?此外,当应用程序终止时,我是否真的无法在iOS上接收仅限数据的消息推送?

共有3个答案

柯甫
2023-03-14

就我而言,照医生说的做是不够的。所以我意识到我应该添加WidgetsFlutterBinding。在主函数中的所有内容之前,确保重新初始化(),如下所示:

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  FirebaseMessaging.onBackgroundMessage(_handleMessage);
  runApp(const Homino());
}
俞学
2023-03-14

_firebaseMessagingBackgroundHandler函数应该在主函数之外。

Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  await Firebase.initializeApp();
}


Future<void> main() async {

  FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);


  runApp(
    ...
  );
}
程志新
2023-03-14

我和你在同一条线上犯了同样的错误。我查看了文档,它说了关于后台消息处理程序的两件事。

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

在我的例子中,它不是顶级函数,它是在类中声明的。当您将处理程序移出任何类或函数,使其成为顶级函数并且不需要任何类或方法初始化时,错误就会消失。

 类似资料:
  • 每当我尝试注册并点击注册按钮时,我都会遇到这种类型的空值检查运算符的问题。我收到了这个错误消息 ══════ 异常捕获手势 ════════════════════ 在处理手势时引发了以下_CastError:对空值使用空检查运算符 当抛出异常时,这是堆栈 #0\u授权状态。建筑包装:gr_空间/屏幕/配置文件_屏幕。省道:244 #1(香港)地产_handleTap包装:颤振/材料/墨水井。省道

  • 我正在调用一个post API,在该API中,我必须发送FormData,但在接收到响应后,当我尝试解析该响应时,我得到了以下异常。 我得到以下错误: 下面是我的模型课https://gist.github.com/achinverma/641774f50d27b2f4f5be9f1c341f0fc2

  • 我对颤振世界还不熟悉,我犯了一个我不能完全理解的错误。 这是我的netwrok处理程序代码 这是我的代码,我调用网络处理器的获取方法 我得到了这个错误 [错误:flatter/lib/ui/ui\u dart\u state.cc(209)]未处理的异常:类型'\u InternalLinkedHashMap 谁能帮帮我吗?

  • 注意:同样的代码,当使用在另一个帐户的firebase工作,我似乎不能解决问题。

  • 有人能解决这个问题吗? E/flutter(6629):尝试呼叫: createUserSusEmailAndPassword(email:"nehalt88@gmail.com",密码:"123456")E/flutter(6629):#0Object.noSuchMethod(飞镖: core-patch/object_patch.dart:63: 5)E/flutter(6629):#1Re

  • 问题内容: 我想知道与使用if语句先检查null相比,使用try / exception处理null的成本。 提供更多信息。因为在此应用程序中,有> 50%的机会获得空值。如果未输入任何数据,则通常为null。因此,尝试使用null进行计算是很平常的事。 话虽这么说,如果我先使用if语句在计算之前先检查null并且不首先尝试计算是否会提高性能,或者仅抛出异常并对其进行处理会更便宜? 感谢您的任何建