RxDart API 뽀개기3 - pub.dev 번역

힐링코더·2023년 9월 28일
0

Flutter for a code monkey

목록 보기
14/14
post-thumbnail

전 포스팅에서는 rx 라이브러리를 뽀갰다.
살면서 한 번도 라이브러리를 제대로 쳐다 본 적이 없어서 인생에 한 번은 해 보고 싶었던 일을 했다.
그러나 지금 내 수준에서는 그런 작업이 개발 실력 향상에 크게 도움이 되지 않는다는 결론에 다다라
여기서는 나머지 라이브러리들을 굉장히 가볍게 훑을 거다.
ㄱㅈㅇ.

rx_streams

rx_streams는 Dart 언어에서 사용할 수 있는 반응형 프로그래밍을 위한 라이브러리입니다.
주어진 클래스들을 통해 이 라이브러리의 주요 기능들을 다음과 같이 요약할 수 있습니다:

  1. 다양한 스트림 생성:
    특정 함수를 호출하여 값 생성 (FromCallableStream)
    주어진 범위의 숫자 시퀀스 생성 (RangeStream)
    지정된 시간 후 값 발생 (TimerStream)

  2. 스트림 연결 및 조합:
    여러 스트림의 값을 하나로 결합 (CombineLatestStream, ZipStream)
    스트림을 순차적으로 연결 (ConcatStream, ConcatEagerStream)
    주어진 스트림의 값들을 하나의 스트림으로 통합 (MergeStream)
    최근에 발생한 스트림만의 값을 처리 (SwitchLatestStream)

  3. 스트림 제어 및 변환:
    첫 번째로 값을 방출하는 스트림만의 값을 처리 (RaceStream)
    특정 조건에 따라 스트림 재생성 (RetryStream, RetryWhenStream)
    스트림 생성 시점을 지연 (DeferStream)
    특정 횟수만큼 스트림 재생성 (RepeatStream)

  4. 스트림 값의 저장 및 재방송:
    최근 값 또는 모든 값을 저장하고 재방송 (ReplayConnectableStream, ValueConnectableStream)
    발생한 값들에 동기적으로 접근 (ReplayStream, ValueStream)

  5. 스트림의 다중 구독 지원:
    스트림을 여러 구독자에게 방송 (PublishConnectableStream)
    구독 시작 시점을 수동으로 제어 (ConnectableStream)

  6. 스트림 자원 관리:
    스트림 생성 및 종료 시점에 자원을 할당 및 해제 (UsingStream)

  7. 기타 기능:
    두 스트림의 시퀀스 비교 (SequenceEqualStream)
    무한한 시간 동안 값을 방출하지 않는 스트림 (NeverStream)

이러한 기능들을 통해 rx_streams 라이브러리는 복잡한 비동기 데이터 흐름을 쉽게 관리하고 조작할 수 있는 강력한 도구를 제공합니다.


어, 근데 이거 rx 라이브러리에 있던 것들 아닌가?
알고 보니...
rx 라이브러리는 rx_streams, rx_subjects, rx_transformers, rx_utils를 다 포함하는 라이브러리였다...
따라서 라이브러리 뽀개기는 여기서 마무리한다.

자투리 정보들

Extension Methods(확장 메서드)
RxDart에 제공되는 확장 메서드들은 어떤 스트림에도 사용할 수 있습니다.
이들은 원본 스트림을 이벤트를 버퍼링하거나 제어하는 등의 추가 기능을 가진 새로운 스트림으로 변환합니다.

Stream.fromIterable([1, 2, 3])
  .throttleTime(Duration(seconds: 1))
  .listen(print); // prints 3

Subjects(주제라고 하지 말고 그냥 서브젝트라고 하자)
Dart는 Stream을 생성하고 관리하기 위한 StreamController 클래스를 제공합니다.
RxDart는 추가적인 기능을 갖춘 두 가지 StreamController, 즉 Subjects를 제공합니다:

  1. BehaviorSubject - 가장 최근에 추가된 값 또는 오류를 캐시하는 브로드캐스트 StreamController입니다.
    새로운 리스너가 스트림에 구독하면, 가장 최근의 값 또는 오류가 리스너에게 전송됩니다.
    또한, 마지막으로 발행된 값을 동기적으로 읽을 수 있습니다.

  2. ReplaySubject - 추가된 값을 캐시하는 브로드캐스트 StreamController입니다.
    새로운 리스너가 스트림에 구독하면, 캐시된 값들이 리스너에게 전송됩니다.

이 정도면 RxDart doc은 거의 다 읽었다.
이 이상을 원하면 문서를 읽지 말고 코드를 봐야 한다.

그러나
1. Documentation on the Dart Stream class
https://api.dart.dev/stable/3.1.3/dart-async/Stream-class.html
2. Tutorial on working with Streams in Dart
https://dart.dev/tutorials/language/streams
3. ReactiveX (Rx)
https://reactivex.io/
이 정도는 보고 코드 보는 게 좋을 거 같다.

profile
여기는 일상 블로그, 기술 블로그는 https://yourhealingcoder.tistory.com/

0개의 댓글