【发布时间】:2018-09-25 14:45:24
【问题描述】:
我有一个setMethodCallHandler,它从我的 Java 代码运行一个回调,我希望它设置一个包含结果的 Future。类似的东西
Future<String> fun() async {
return setMethodCallHandler((MethodCall call) {
return () async {return call.arguments["arg"];}();
});
}
我想要做的是如果 call.argument 将返回“abc”,
var a = await fun();
a 将等于“abc”
我找到的唯一信息是setMethodCallHandler上的文档:
如果处理程序返回的 future 以结果完成,则该值将被发送回平台插件调用者,该调用者包装在此通道的编解码器定义的成功信封中。如果 future 以 PlatformException 结束,则该异常的字段将用于填充一个错误信封,然后将其发回。
但我不明白如何获得“平台插件调用者包装在此频道的编解码器定义的成功信封中”?
【问题讨论】:
-
您能否提供更多背景信息?你想达到什么目的?你在什么情况下使用
setMethodCallHandler? -
@GünterZöchbauer 是否更清楚?
-
并非如此。
setMethodCallHandler是MethodChanneldocs.flutter.io/flutter/services/MethodChannel/… 的一种方法(您从中复制了引用),但您的代码声明了一个新的setMethodCallHandler函数,该函数似乎与MethodChannel无关。对我来说,不清楚您问题中代码的目的是什么。