РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
488 of 723 menu

Класс Completer

Класс Completer используется для создания объекта Future, завершением которого можно управлять вручную. Обычно Future создается асинхронной функцией и завершается автоматически, но Completer дает возможность сохранить ссылку на Future и завершить его позже из любого места программы. У класса есть свойство future, которое возвращает связанный Future, метод complete для успешного завершения со значением и метод completeError для завершения с ошибкой. Свойство isCompleted показывает, был ли Completer уже завершен.

Синтаксис

Completer<T> completer = Completer<T>();

Здесь T - тип значения, которым будет завершен связанный Future.

Пример

Давайте создадим Completer, получим его Future и завершим его значением позже:

void main() { Completer<String> completer = Completer<String>(); completer.future.then((value) { print(value); }); completer.complete('abcde'); }

Результат выполнения кода:

"abcde"

Пример

Давайте завершим Completer с ошибкой и обработаем ее через catchError:

void main() { Completer<String> completer = Completer<String>(); completer.future.catchError((error) { print('Error: $error'); }); completer.completeError('Something went wrong'); }

Результат выполнения кода:

"Error: Something went wrong"

Пример

Давайте проверим свойство isCompleted до и после завершения Completer:

void main() { Completer<int> completer = Completer<int>(); print(completer.isCompleted); completer.complete(1); print(completer.isCompleted); }

Результат выполнения кода:

false true

Смотрите также

  • класс Future,
    который представляет результат асинхронной операции
  • метод complete,
    который завершает Completer значением
  • метод completeError,
    который завершает Completer ошибкой
  • свойство future,
    которое возвращает связанный Future
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить