Plog
Flutter - rxdart streams 본문
rxdart는 dart언어에서 reactive programming을 구현하는데 있어서
여러가지 추가적인 기능들을 제공해준다.
rxdart의 구성요소
- Stream Classes
- Extension Methods
- Subjects
1. Stream Classes
// ConcatStream 연결 스트림
ConcatStream([
Stream.fromIterable([1]),
TimerStream(2, Duration(days: 1)),
Stream.fromIterable([3])
]).listen(print); // 1, 2, 3 을 출력한다.
// DeferStream은 리스너가 구독하기 전까지 기다린 다음 팩토리 함수로 스트림을 생성한다.
DeferStream(() => Stream.value(1)).listen(print); // 1 출력
// MergeStream은 두 스트림을 합친다.
MergeStream([
TimerStream(1, Duration(days: 10)),
Stream.fromIterable([2])
]).listen(); // 2, 1 을 출력한다.
NeverStream().listen(print); // 출력 또는 종료하지 않는다. 종료불가능한, 무한한 지속시간을 나타내는 스트림 시퀀스를 반환한다.
RaceStream([
TimerStream(1, Duration(days: 1)), // 첫번째 스트림
TimerStream(2, Duration(days: 2)), // 두번째 스트림
TimerStream(3, Duration(seconds: 3)) // 세번째 스트림
]).listen(print); // 제일 처음 데이터가 발행되는 세번째 스트림의 모든 아이템만 발행한다.
RepeatStream((int repeatCount) =>
Stream.value('repeat index: $repeatCount'), 3)
.listen((i) => (print(i));
// 'repeat index: 0, repeat index: 1, repeat index: 2' 출력
RetryStream(() { Stream.fromIterable([1]); })
.listen((i) => print(i)); // 1 출력
RetryStream(() {
Stream.fromIterable([1])
.concatWith([ErrorStream(Error())]);
}, 1)
.listen(print, onError: (e, s) => print(e));
// 다시 시도 x : 1 출력, 에러 다시 시도
// 다시 시도 1 : 1 출력, 에러 다시 시도 횟수가 1번으로 지정되 있으므로 2번 다시시도 하지 않음
// RetryError 출력
'Mobile > Flutter' 카테고리의 다른 글
flutter_bloc 패키지를 이용한 카운터 앱 (0) | 2020.02.16 |
---|---|
Flutter 카운터 앱 Steam -> Bloc (0) | 2020.02.16 |
Flutter(플러터) - Stream을 이용한 카운터 앱 (0) | 2020.02.16 |