Свойство future
Свойство future класса Completer возвращает объект Future,
связанный с данным Completer. Этот Future будет завершён,
когда у Completer будет вызван метод complete или
completeError. Свойство не принимает параметров и доступно только
для чтения. Обычно его используют, чтобы вернуть Future из функции
и позже завершить его вручную в нужный момент.
Синтаксис
completer.future
Пример
Давайте создадим Completer, получим его future и завершим
через complete со значением 'abcde':
import 'dart:async';
void main()
{
Completer<String> completer = Completer<String>();
Future<String> future = completer.future;
future.then((value) {
print(value);
});
completer.complete('abcde');
}
Результат выполнения кода:
"abcde"
Пример
Давайте завершим future через completeError и обработаем
ошибку через catchError:
import 'dart:async';
void main()
{
Completer<String> completer = Completer<String>();
Future<String> future = completer.future;
future.catchError((error) {
print('Error: $error');
return 'default';
});
completer.completeError('something went wrong');
}
Результат выполнения кода:
"Error: something went wrong"
Пример
Давайте вернём future из функции и завершим его позже через
Timer:
import 'dart:async';
Future<String> getValue()
{
Completer<String> completer = Completer<String>();
Timer(Duration(seconds: 1), () {
completer.complete('12345');
});
return completer.future;
}
void main()
{
getValue().then((value) {
print(value);
});
}
Результат выполнения кода:
"12345"
Смотрите также
-
класс
Completer,
который позволяет вручную завершать Future -
метод
complete,
который завершает future значением -
метод
completeError,
который завершает future ошибкой -
свойство
isCompleted,
которое показывает, завершён ли Completer