公式ドキュメント
Flutter -> host
Flutter
const channel = MethodChannel('channnelName');
final result =
await channel.invokeMethod('methodName', <String, dynamic>{
'param1': foo,
'param2': bar,
});
Android
methodChannel.setMethodCallHandler { call, result ->
when (call.method) {
"methodName" -> {
val param1 = call.argument<Int>("param1")
val param2 = call.argument<Int>("param2")
result(param1 * param2)
}
}
}
iOS
methodChannel?.setMethodCallHandler({(call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
switch call.method {
case "methodName":
if let args = call.arguments as? Dictionary<String, Any>,
let param1 = args["param1"] as? Int,
let param2 = args["param2"] as? Int {
result(param1 * param2)
} else {
result(FlutterError.init(code: "bad args", message: nil, details: nil))
}
break
default:
break
}
})
host -> Flutter
Android
val params = hashMapOf(
Pair("param1", 1),
Pair("param2", 2),
)
methodChannel.invokeMethod("methodName", params)
iOS
var params = [String: Any]()
params["param1"] = 1
params["param2"] = 2
methodChannel.invokeMethod("methodName", arguments: params)
Flutter
methodChannel.setMethodCallHandler((call) {
switch (call.method) {
case "loadStart":
int param1 = call.arguments["param1"];
int param2 = call.arguments["param2"];
print(param1 * param2);
break;
}
return Future.value('complete');
});