Flutter Event Channel在Android原生端接收不到方法调用怎么办?

子荧(打工版) 阅读 51

我在用Event Channel实现Flutter和Android通信时卡住了。按照文档写了个按钮点击发送消息的代码,但Android端的方法就是没反应,控制台也没有错误提示,这是哪里出问题了?

Flutter端的代码是这样的:


final eventChannel = EventChannel('com.example/counter');
// 按钮点击时调用
void _sendMessage() {
  eventChannel.send('increment').then((result) {
    print('Received: $result');
  }).catchError((error) {
    print('Error: $error');
  });
}

Android端已经通过registerDefaultBinaryMessenger()初始化,并且用类似这样监听:


EventChannel(eventChannelName).setStreamHandler(...);

但发现连setStreamHandler都没触发。之前检查过方法通道名称是否一致,应该没问题…

我来解答 赞 4 收藏
二维码
手机扫码查看
1 条解答
Dev · 涵予
你用错通道类型了,EventChannel是用于原生端监听并返回事件流的,不能直接调用send方法。要发消息应该用MethodChannel。

直接这样改Android代码:

MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "com.example/counter").setMethodCallHandler { call, result ->
if (call.method == "increment") {
// 处理逻辑
result.success("ok")
} else {
result.notImplemented()
}
}


Flutter端也换成MethodChannel:

final methodChannel = MethodChannel('com.example/counter');
void _sendMessage() {
methodChannel.invokeMethod('increment').then((result) {
print('Received: $result');
}).catchError((error) {
print('Error: $error');
});
}
点赞 3
2026-02-09 22:26