签名为
void setMethodCallHandler(Future<dynamic> handler(MethodCall call))
,因此我们需要在Dart端提供一个返回
Future<dynamic>
例如
_channel.setMethodCallHandler(myUtilsHandler);
然后实现处理程序。这个可以处理两种方法
foo
和
bar
分别返回
String
和
double
。
Future<dynamic> myUtilsHandler(MethodCall methodCall) async {
switch (methodCall.method) {
case 'foo':
return 'some string';
case 'bar':
return 123.0;
default:
throw MissingPluginException('notImplemented');
}
}
在Java端,返回值传递给
success
的方法
Result
回调。
channel.invokeMethod("foo", arguments, new Result() {
@Override
public void success(Object o) {
// this will be called with o = "some string"
}
@Override
public void error(String s, String s1, Object o) {}
@Override
public void notImplemented() {}
});
在Swift中,返回值是
Any?
传递给
result
关闭。(未实现由常量any参数发出信号
NSObject
价值
FlutterMethodNotImplemented
.)
channel.invokeMethod("foo", arguments: args, result: {(r:Any?) -> () in
// this will be called with r = "some string" (or FlutterMethodNotImplemented)
})