Метод complete
Метод complete класса Completer завершает
связанный с этим объектом Future успешным
значением. В первый и единственный параметр мы передаём
значение, которое станет результатом будущего.
Класс Completer позволяет вручную управлять
состоянием Future: создать его через свойство
future, а затем в нужный момент завершить его
методом complete. Это удобно, когда результат
появляется асинхронно из внешнего источника, например из
колбэка события или таймера. После вызова complete
повторно завершить тот же Completer нельзя - это
приведёт к ошибке.
Синтаксис
completer.complete(value)
Пример
Давайте создадим Completer, завершим его числом
1 и выведем полученный результат:
import 'dart:async';
void main()
{
Completer<int> completer = Completer<int>();
completer.complete(1);
completer.future.then((res) {
print(res);
});
}
Результат выполнения кода:
1
Пример
Давайте завершим Completer строкой и получим её
через await:
import 'dart:async';
void main()
{
Completer<String> completer = Completer<String>();
completer.complete('abcde');
completer.future.then((res) {
print(res);
});
}
Результат выполнения кода:
"abcde"
Пример
Давайте завершим Completer списком чисел и выведем
его на экран:
import 'dart:async';
void main()
{
Completer<List<int>> completer = Completer<List<int>>();
completer.complete([1, 2, 3, 4, 5]);
completer.future.then((res) {
print(res);
});
}
Результат выполнения кода:
[1, 2, 3, 4, 5]
Смотрите также
-
класс
Completer,
который управляет состоянием Future -
метод
completeError,
который завершает Future ошибкой -
свойство
future,
которое возвращает связанный Future -
свойство
isCompleted,
которое проверяет завершённость Completer