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
- StreamSink<T>
Implementers
생성자
void onListen()?,
void onPause()?,
void onResume()?,
FutureOr<void> onCancel()?,
bool sync = false
})
A controller with a stream that supports only one single subscriber.
factory
void onListen()?,
void onCancel()?,
bool sync = false
})
A controller where stream can be listened to more than once.
factory