如何使用MethodChannel从本机平台调用应用程序的Dart部分中的方法?

如何使用MethodChannel从本机平台调用应用程序的Dart部分中的方法?,第1张

如何使用MethodChannel从本机平台调用应用程序的Dart部分中的方法

签名是

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)})


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4930616.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存