签名是
void setMethodCallHandler(Future<dynamic> handler(MethodCallcall)),因此我们需要在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参数表示const
NSObject值来发出信号
FlutterMethodNotImplemented。)
channel.invokeMethod("foo", arguments: args, result: {(r:Any?) -> () in // this will be called with r = "some string" (or FlutterMethodNotImplemented)})
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)