flutter - Flutter:如何等待android平台通道功能完成并返回结果
问题描述
使用 AWS 开发工具包在 Android 上创建用于文件上传的平台通道。现在我想在后台等待上传完成并返回结果的状态。
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
if (call.method == "uploadToAWS") {
new DoUpload().execute();
// how to await here ?
result.success(true);
} else {
result.notImplemented()
}
}
解决方案
不要在那里等待,而是删除“result.success(true);” 从那里声明并简单地将“结果”对象分配给您自己的“MethodChannel.Result”类型的对象。
然后使用它从任何地方执行其“成功”、“错误”或“未实现”方法,如下例所示。
public class Activity extends FlutterActivity { private MethodChannel.Result myResult; new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL) .setMethodCallHandler( (call, result) -> { myResult = result; } ); private void myCustomMethod { myResult.success(yourData); } }
现在您可以在类中的任何位置使用这些 myResult.success()、myResult.error() 方法。
推荐阅读
- button - 当我在 Slack 上单击 HeroCard 中的一个按钮时,两个按钮都会动画
- asterisk - 通过任何 Asterisk API 访问 RTP 流量
- prolog - SICStus Prolog 中的验证属性
- struts2 - 建议从 struts 1.2 迁移到 struts 2.x?
- c# - ASP.NET MVC - 检查上传的文件是 .EXE 还是 PDF 文件
- c - 当动态内存分配显式转换为结构类型时,会发生什么?
- android-studio - 在离线模式下添加 FlutterBlue 插件
- ruby-on-rails - 如何在 RSpec 中存根异常并出现错误?
- websocket - 创建到 guacd 的 WebSocket 隧道失败:连接超时
- email - 如何在 Gmail 中创建一个电子邮件模板,将下一周的摘要发送到多个电子邮件地址