首页 > 解决方案 > 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()
            }
        }

标签: flutterdartflutter-platform-channel

解决方案


  1. 不要在那里等待,而是删除“result.success(true);” 从那里声明并简单地将“结果”对象分配给您自己的“MethodChannel.Result”类型的对象。

  2. 然后使用它从任何地方执行其“成功”、“错误”或“未实现”方法,如下例所示。

    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() 方法。


推荐阅读