You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter接收Android Native带int参数的回调问题排查

问题原因

你在Android端直接传递了单个int类型的参数,但Dart端错误地将call.arguments强转为Map<dynamic, dynamic>,类型不匹配自然拿不到参数值。

修复方案

方案1:直接接收单个int参数

修改Dart端代码,把call.arguments直接转为int类型即可:

Future platformCallHandler(MethodCall call) async {
  switch (call.method) {
    case "onDone":
      // 直接将arguments转为int类型
      final int length = call.arguments as int;
      print("收到的length值:$length");
      break;
  }
}

方案2:如果后续需要传递多个参数(可选)

如果之后需要传递多个参数,Android端要先把参数包装成Map再发送:

int length = 1234;
String status = "completed";

handler.post(() -> {
    if (channel != null) {
        HashMap<String, Object> params = new HashMap<>();
        params.put("length", length);
        params.put("status", status);
        channel.invokeMethod("onDone", params);
    }
});

对应的Dart端代码就可以用Map接收:

Future platformCallHandler(MethodCall call) async {
  switch (call.method) {
    case "onDone":
      final args = call.arguments as Map<dynamic, dynamic>;
      final int length = args["length"] as int;
      final String status = args["status"] as String;
      print("length: $length, status: $status");
      break;
  }
}

内容的提问来源于stack exchange,提问作者bellotas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 23:05:16