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
相关产品推荐
相关产品推荐

