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

Метод close

Метод close класса StreamController закрывает контроллер потока. После вызова этого метода в поток больше нельзя добавлять новые данные через add или addError. Метод возвращает Future, который завершается, когда все подписчики получат уведомление о закрытии потока. Метод не принимает параметров.

Синтаксис

controller.close()

Пример

Давайте создадим контроллер, добавим в него несколько значений, а затем закроем поток:

import 'dart:async'; void main() { StreamController<int> controller = StreamController<int>(); controller.stream.listen( (int value) => print(value), onDone: () => print('Stream closed'), ); controller.add(1); controller.add(2); controller.add(3); controller.close(); }

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

1 2 3 "Stream closed"

Пример

Давайте проверим, что после закрытия потока добавление данных вызывает ошибку:

import 'dart:async'; void main() { StreamController<int> controller = StreamController<int>(); controller.stream.listen( (int value) => print(value), onDone: () => print('Stream closed'), ); controller.add(1); controller.close(); controller.add(2); }

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

1 "Stream closed" Unhandled exception: Bad state: Cannot add new events after calling close

Пример

Давайте дождемся завершения метода close с помощью await и выведем сообщение после закрытия потока:

import 'dart:async'; void main() async { StreamController<int> controller = StreamController<int>(); controller.stream.listen( (int value) => print(value), onDone: () => print('Stream closed'), ); controller.add(1); controller.add(2); await controller.close(); print('Close completed'); }

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

1 2 "Stream closed" "Close completed"

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

  • класс StreamController,
    который управляет потоком данных
  • метод add,
    который добавляет данные в поток
  • метод addError,
    который добавляет ошибку в поток
  • свойство stream,
    которое возвращает поток контроллера
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить