Flutter 无法为 Firebase 云混乱调用回调函数

Vex*_*xal 15 firebase flutter

当我尝试onBackgroundMessage为 Flutter firebase 云消息传递添加回调函数时出现此错误。

颤振:在构建主屏幕(脏)时抛出以下参数错误:颤振:无效参数:无法设置后台消息处理程序!onBackgroundMessage flutter: 应该是顶级或静态函数,不应绑定到 flutter: 类或匿名函数。flutter: flutter: 相关的导致错误的小部件是: flutter: HomeScreen flutter: file:///Users/sournvisal/Documents/projects/flutter-project/one_sala/lib/router.dart:17:39

请帮忙。谢谢。

hum*_*zed 26

正如错误所说,onBackgroundMessage需要是顶级静态功能

TOP-LEVEL 函数是在类之外的函数。例子:

 Future<dynamic> myBackgroundMessageHandler(Map<String, dynamic> message) {
   if (message.containsKey('data')) {
     // Handle data message
     final dynamic data = message['data'];
   }

   if (message.containsKey('notification')) {
     // Handle notification message
     final dynamic notification = message['notification'];
   }

   // Or do other work.
 }
Run Code Online (Sandbox Code Playgroud)

STATIC FUNCTION是类内部的函数,但以static关键字为前缀,并且不对实例进行操作,因此无法访问this. 例子:

class Fcm {
  static Future<dynamic> myBackgroundMessageHandler(Map<String, dynamic> message) {
    if (message.containsKey('data')) {
     // Handle data message
     final dynamic data = message['data'];
   }

   if (message.containsKey('notification')) {
     // Handle notification message
     final dynamic notification = message['notification'];
   }

   // Or do other work.
  }
}
Run Code Online (Sandbox Code Playgroud)

  • @Wilmer你应该像这样使用它:`onBackgroundMessage:myBackgroundMessageHandler`而不是这样:`onBackgroundMessage:(message)=&gt; myBackgroundMessageHandler(message)` (3认同)