Home > Enterprise >  How do you check if an async void method is completed in Dart?
How do you check if an async void method is completed in Dart?

Time:09-28

How do you check if an async void method is completed in Dart?

CodePudding user response:

Method 1:

await voidFoo();
print("the above function was completed");
Future<void> voidFoo() async{
  await Future.delayed(Duration(seconds:1));
}

Method 2:

Using a boolean variable like this,

bool isCompleted = false;
...
await voidFoo();
Future<void> voidFoo() async{
  await Future.delayed(Duration(seconds:1));
  isCompleted = true; //assuming isCompleted can be accessed here
}

CodePudding user response:

You can use dart Completer.

import 'dart:async';

void main() async {
  final completer = Completer<String>();
  
  Future<String> getHttpData()async{
    return Future.delayed(const Duration(seconds: 1), () => "Future Result");
  }
  
Future<String> asyncQuery()async {

  final httpResponse = await getHttpData();
  completer.complete(httpResponse);

  return completer.future;
}

 print('IsCompleted: ${completer.isCompleted}');
 await asyncQuery();
 print('IsCompleted: ${completer.isCompleted}');
}


Result;

IsCompleted: false
IsCompleted: true
  • Related