aspe

Dart - StreamController 본문

Dart/API

Dart - StreamController

aspe 2023. 2. 17. 13:52

컨트롤하는 Stream을 가지고 있는 Controller 입니다.

 

이 Controller는 stream에서 데이터, 오류 그리고 완료 이벤트를 전송할 수 있게 해줍니다.

 

이 클래스는 다른 객체들이 listen 할 수 있는 간단한 스트림을 생성하고 해당 스트림에 이벤트를 푸쉬할 수 있습니다.

 

이 Controller는 스트림이 일시 중지되었는지, 구독자가 있는지를 확인하고 둘 중 하나가 변경될 때 콜백을 받을 수 있습니다.

 

예를 들면:

 

final streamController = StreamController(
  onPause: () => print('Paused'),
  onResume: () => print('Resumed'),
  onCancel: () => print('Cancelled'),
  onListen: () => print('Listens'),
);

streamController.stream.listen(
  (event) => print('Event: $event'),
  onDone: () => print('Done'),
  onError: (error) => print(error),
);

스트림에 subscriber가 있는지 확인하고 싶다면,  hasListener을 사용하세요.

var hasListener = streamController.hasListener; // true

스트림에 데이터 이벤트를 전달하고 싶다면, add or addStream을 사용하세요.

streamController.add(999);
final stream = Stream<int>.periodic(
  const Duration(milliseconds: 200), (count) => count * count).take(4);
await streamController.addStream(stream);

스트림에 에러 이벤트를 전달하고 싶다면, addError or addStream을 사용하세요.

streamController.addError(Exception('Issue 101'));
await streamController.addStream(Stream.error(Exception('Issue 404')));

스트림이 닫혔는지 확인하고 싶다면, isClosed을 사용하세요.

var isClosed = streamController.isClosed; // false

스트림을 닫고 싶다면, close을 사용하세요.

await streamController.close();
isClosed = streamController.isClosed; // true

 

Implemented types

Implementers

 

생성자

 

StreamController({

void onListen()?, 

void onPause()?, 

void onResume()?, 

FutureOr<void> onCancel()?, 

bool sync = false

})

A controller with a stream that supports only one single subscriber.

factory
 

StreamController.broadcast({

void onListen()?, 

void onCancel()?, 

bool sync = false

})

A controller where stream can be listened to more than once.

factory

'Dart > API' 카테고리의 다른 글

Dart - Concurrency in Dart  (0) 2023.02.17
Dart/API - new Keyword를 사용하는 이유  (0) 2022.11.26
Comments