Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- MDP
- Kaggle
- pytorch
- MATLAB
- ARM
- DART
- bloc
- Got
- Flutter
- BFS
- system hacking
- Stream
- llm을 활용 단어장 앱 개발일지
- Widget
- ML
- BOF
- Image Processing
- FastAPI
- Computer Architecture
- PCA
- Dreamhack
- 백준
- BAEKJOON
- rao
- 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습
- study book
- 영상처리
- C++
- fastapi를 사용한 파이썬 웹 개발
- Algorithm
Archives
- Today
- Total
Bull
[Dart::Stream] listen method 본문
listen
메소드는 스트림의 이벤트를 "구독(subscribe)"하는 것을 의미하며, 스트림이 데이터를 내보낼 때마다 등록된 콜백 함수가 호출된다. 이것은 스트림이 비동기적으로 데이터를 전달하는 방식이다. 스트림은 다음과 같은 세 가지 유형의 이벤트를 발생시킬 수 있다.
- 데이터 이벤트: 스트림에서 새로운 데이터 조각이 생성되었을 때 호출된다.
- 에러 이벤트: 스트림 처리 중에 오류가 발생하면 호출된다.
- 완료 이벤트: 스트림이 더 이상 이벤트를 생성하지 않을 때 호출된다.
listen 메소드의 기본 구조
stream.listen(
(data) {
// 데이터 이벤트 (기본 이벤트)
},
onError: (error) {
// 에러 이벤트
},
onDone: () {
// 완료 이벤트
},
cancelOnError: false, // 에러 발생 시 스트림을 자동으로 취소할지 여부
);
data
: 스트림에서 새로운 데이터 이벤트가 발생할 때 호출되는 콜백 함수, 스트림의 각 데이터 이벤트는 이 콜백 함수에 전달된다.onError
: 스트림에서 에러 이벤트가 발생할 때 호출되는 콜백 함수, 이 함수를 통해 발생한 에러를 처리할 수 있다.onDone
: 스트림이 완료되었을 때 호출되는 콜백 함수, 더 이상 데이터나 에러 이벤트가 발생하지 않음을 나타낸다.cancelOnError
: 이 옵션이true
로 설정되면, 에러 이벤트가 발생했을 때 스트림의 구독이 자동으로 취소된다. 기본값은false
.
void main() {
// StreamController로 스트림 생성
StreamController<int> controller = StreamController<int>();
// listen 메소드로 스트림 구독
controller.stream.listen(
(data) {
print('Data received: $data');
},
onError: (error) {
print('Error occurred: $error');
},
onDone: () {
print('Stream is done.');
},
cancelOnError: true, // 에러 발생 시 구독을 자동으로 취소
);
// 스트림에 데이터 추가
controller.add(1);
controller.add(2);
controller.addError('An error occurred!');
controller.add(3); // 이 이벤트는 cancelOnError가 true라서 호출되지 않음
// 스트림을 종료
controller.close();
}
# 결과
Data received: 1
Data received: 2
Error occurred: An error occurred!
controller.add(1)
및 controller.add(2)
: data
콜백이 호출되어 해당 데이터가 출력된다.controller.addError('An error occurred!')
: onError
콜백이 호출되어 에러가 출력된다.cancelOnError: true
: 에러 발생 후 스트림의 구독이 취소되고, 이후 추가된 3
은 출력되지 않는다.onDone
: 스트림이 종료되면 콜백이 호출됩니다.
'Computer Language > Dart' 카테고리의 다른 글
[Dart::Stream] Stream을 비동기처리 한다는 게 무슨 뜻일까? with Bloc (0) | 2024.08.19 |
---|---|
[Dart::Stream] broadcast method (0) | 2024.08.19 |
[Dart] Mixin은 언제 사용하나요? (1) | 2024.07.23 |
[Dart] Extension Methods란? (0) | 2024.07.15 |
[Dart] Stream이란? (기본, before understanding Bloc Concept) (0) | 2024.07.11 |