250x250
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
- Flutter #Stream #dart
- 플러터 #안드로이드 #플레이콘솔 #앱내리기
- 도약전환
- 희망적금연계
- Flutter #Stream
- 희망적금전환
- flutter #dart #stream
- 안드로이드 #코틀린 #코루틴 #콜백 #채널
- 도약연계
- 청년도약계좌환승
- 도약계좌전환
- 조립 후 재부팅
Archives
- Today
- Total
Flutter 개발 상자
[Flutter Stream③] StreamSubscription 활용 본문
728x90
StreamSubscription
정의
말그대로 스트림의 구독
Stream.listen을 사용하여 Stream을 수신하면 StreamSubscription 개체가 반환된다.
StreamSubscription<T> listen(void onData(T event)?,
{Function? onError, void onDone()?, bool? cancelOnError});
listen 함수를 보면 StreamSubscription의 반환값이 보인다.
앞서 listen 함수를 써봤을때 반환값을 딱히 저장하진 않았었는데 이 반환값으로 무엇을 할 수 있는걸까?
기본 사용법
void main() async {
final Stream<int> stream = Stream.periodic(const Duration(milliseconds: 200), (count) {
return count;
}).take(4);
final StreamSubscription<int> streamSubscription = stream.listen(
(event) {
print('event : $event');
},
onDone: () {
print('완료');
},
onError: (error, stackTrace) {
print('에러 : ${error.toString()}');
},
);
await Future.delayed(const Duration(milliseconds: 300));
streamSubscription.pause();
streamSubscription.resume();
await Future.delayed(const Duration(milliseconds: 200));
streamSubscription.cancel();
streamSubscription.resume(); // 다시 실행되지 않음
}
출력값은 0, 1이 출력된다.
pause, resume, cancel 모두 직관적인 말그대로의 기능을 수행한다.
onData, onDone, onError
void main() async {
final Stream<int> stream = Stream.periodic(const Duration(milliseconds: 200), (count) {
return count;
}).take(4);
StreamSubscription<int> streamSubscription = stream.listen(
(event) {
print('event : $event');
},
onDone: () {
print('완료');
},
onError: (error, stackTrace) {
print('에러 : ${error.toString()}');
},
);
// 위의 listen의 파라미터로 넣어준 onData, onDone, onError 모두 override 되어 무시된다.
streamSubscription.onData((data) { print('숫자 $data'); });
streamSubscription.onDone(() { print('스트림 종료'); });
streamSubscription.onError((error, stackTrace) { print('오류'); });
}
이것 역시 어렵지 않다. onlisten의 파라미터로 넣어준 함수를 여기서도 넣어줄 수 있으며 기존의 함수를 덮어쓰기 해준다.
요약
- StreamSubscription은 스트림을 수신하는 개체, 스트림의 구독자.
- 이벤트를 받았을때 동작을 처리하고, 구독 일시중지, 취소를 할 수 있다.
728x90
'Flutter' 카테고리의 다른 글
[Flutter] Talker 패키지를 이용하여 로그(Log)를 파일로 저장하기 (0) | 2023.12.21 |
---|---|
[Flutter Stream④] StreamController 활용 (2) | 2023.11.12 |
[Flutter Stream②] Stream 기본 사용법 (1) | 2023.11.12 |
[Flutter Stream①] Rective Programing과 Stream (2) | 2023.11.11 |
[Flutter] 플러터 중수로 거듭나기 위한 학습 목표는 무엇이 있는가? (0) | 2023.11.11 |