I'm creating plugin for flutter. And face a issue from Android native. I'm using Kotlin for Android and want to use value from platform channel from Flutter. It's hard to explain in English. Here's a code.
fun Foo(): Any? {
methodChannel.invokeMethod(
"method",
null,
object : ErrorLogResult("tag") {
override fun success(result: Any?) {
super.success(result)
// Get result.
}
})
// return result from result callback after callback is done.
}
It can be like below in dart code.
Future<dynamic> Foo() async {
final completer = Completer();
someFunctionWithCallback((result) {
completer.complete(result);
});
return completer.future;
}
Old question, but maybe someone will come across this issue, as I had.
Yes, there is something similar: CompletableDeferred
Example pseudocode:
@Volatile
private var completableMeetingService = CompletableDeferred<MeetingService>()
// we want to join meeting, but have to wait for initialization
completableMeetingService.await().joinMeetingWithParams
// completing deffered in some listener
completableMeetingService.complete(zoomSDK.meetingService)