Это можно объяснить кодом, следующим за вашим фрагментом.Возможно, будущее завершение будет вызвано чем-то после вашего кода, и преобразование вашего кода с помощью await будет ждать до завершения, которое никогда не произойдет.
Например, работает следующий код:
main() async {
final c = Completer<String>();
final future = c.future;
future.then((message) => print(message));
c.complete('hello');
}
, ноне эта асинхронная / ожидающая версия:
main() async {
final c = Completer<String>();
final future = c.future;
final message = await future;
print(message);
c.complete('hello');
}