Flutter: как дождаться завершения функции канала платформы Android и возврата результата
Создание канала платформы на Android для загрузки файлов с помощью AWS SDK. Теперь я хочу дождаться завершения загрузки в фоновом режиме и вернуть статус результата.
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()
}
}
0 ответов
Вместо ожидания удалите "result.success(true);" оттуда и просто назначьте объект "результат" своему собственному объекту типа "MethodChannel.Result".
Затем используйте его для выполнения его метода "success", "error" или "notImplemented" из любого места, как показано в примере ниже.
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() из любого места внутри класса.