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

Свойство sink

Свойство sink класса StreamController возвращает объект типа StreamSink, который представляет собой интерфейс для добавления данных в поток. Через этот объект можно отправлять события в поток с помощью метода add, сообщать об ошибках методом addError и закрывать поток методом close. Свойство sink является удобной альтернативой прямым методам контроллера, так как позволяет передавать sink-объект другим частям программы, скрывая сам контроллер.

Синтаксис

StreamController<T> controller = StreamController<T>(); StreamSink<T> sink = controller.sink;

Пример

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

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

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

1 2 3

Пример

Давайте передадим sink контроллера в отдельную функцию, чтобы добавлять данные в поток извне:

import 'dart:async'; void addData(StreamSink<String> sink) { sink.add('abcde'); sink.add('12345'); sink.close(); } void main() { StreamController<String> controller = StreamController<String>(); controller.stream.listen((value) { print(value); }); addData(controller.sink); }

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

"abcde" "12345"

Пример

Давайте отправим в поток ошибку через метод addError объекта sink:

import 'dart:async'; void main() { StreamController<int> controller = StreamController<int>(); controller.stream.listen( (value) { print('Value: $value'); }, onError: (error) { print('Error: $error'); } ); controller.sink.add(1); controller.sink.addError('something went wrong'); controller.sink.close(); }

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

Value: 1 Error: something went wrong

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

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