Flutter:使用 EventChannel 的 PlatformException

kas*_*9us 6 android flutter

我试图EventChannel在我的 flutter 应用程序中实现,但收到以下错误:

\n\n
\n

\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1 服务库捕获异常\n \xe2\x95\x9e\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\ xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\ x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\ x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\ xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\ x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\ x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\ xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90

\n\n

在通道 com.checkin.beacon.entered.beacons 上激活平台流时引发以下 PlatformException:

\n\n

PlatformException(错误,指定为非 null 的参数为 null:\n 方法 kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,\n 参数 args,null)

\n
\n\n

这是我的代码:

\n\n

颤振侧:

\n\n
static const _enteredBeaconsEvent = const EventChannel("com.checkin.beacon.entered.beacons");\n\nstatic void initialize () {\n    _enteredBeaconsEvent.receiveBroadcastStream().listen((data) {\n      print("data= $data");\n    });\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 Android Native (Kotlin) 上,代码为:

\n\n
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {\n        GeneratedPluginRegistrant.registerWith(flutterEngine)\n\n        EventChannel(flutterEngine.dartExecutor.binaryMessenger, "com.checkin.beacon.entered.beacons").setStreamHandler(object : EventChannel.StreamHandler {\n            override fun onListen(args: Any, events: EventSink) {\n                Log.d(TAG, "adding listener")\n\n                events.success(true)\n            }\n\n            override fun onCancel(args: Any) {\n                Log.d(TAG, "cancelling listener")\n            }\n        })\n    }\n
Run Code Online (Sandbox Code Playgroud)\n\n

我进行了很多搜索,但无法找到问题所在。

\n

Adi*_*tya 5

默认情况下,Kotlin 中的所有变量和参数都是非空的。如果您想将 null 参数传递给方法,您应该添加?到其类型,例如:

override fun onListen(args: Any?, events: EventSink?) {...}
Run Code Online (Sandbox Code Playgroud)

所以,你的最终代码将如下所示:

override fun onListen(args: Any?, events: EventSink?) {...}
Run Code Online (Sandbox Code Playgroud)