Flutter – RxDart

Ở bài viết trước, chúng ta đã tìm hiểu về Stream. Và bài viết về Stream sẽ không thật trọn vẹn nếu không đề cập đến RxDart.

RxDart là gói mở rộng từ Stream của ngôn ngữ Dart theo một số tiêu chuẩn từ ReactiveX API. Do đó, 1 số ngữ cảnh sẽ thay đổi:

Dart RxDart
Stream Observable
StreamController Subject

Từ đó, chúng phát sinh ra thêm 3 biến thể chính cho StreamController (Subject):

PublishSubject:

PublishSubject là một Broadcast StreamController, với 1 sự khác biệt là nó sẽ trả về 1 Observable thay vì Stream.

Bạn có thể thấy được, các listener chỉ nhận được những sự kiện xảy ra sau khi chúng bắt đầu lắng nghe từ PublishSubject.

BehaviorSubject:

BehaviorSubject cũng là một Broadcast StreamController, với 1 sự khác biệt là nó sẽ trả về 1 Observable thay vì Stream.

Điểm khác biệt giữa BehaviorSubjectPublishSubject là các listener sẽ nhận được 1 sự kiện gần với thời điểm chúng lắng nghe nhất.

ReplaySubject:

ReplaySubject cũng là một Broadcast StreamController, với 1 sự khác biệt là nó sẽ trả về 1 Observable thay vì Stream.

Ở đây, ReplaySubject sẽ gửi đi tất cả sự kiện đã xảy ra trước đó cho các listener mới.

Lưu ý quan trọng về Resources:

Hãy luôn luôn giải phóng tất cả các Resources khi chúng không còn cần thiết

Những Resources cần quan tâm:

  1. StreamSubscription – Khi bạn không cần lắng nghe sự kiện từ Stream nữa, cancel nó đi.
  2. StreamController – Khi không cần nữa, hãy close nó luôn.
  3. Tương tự với các subjects trong bài viết này, khi không cần nữa thì close nó ngay.

Leave a reply:

Your email address will not be published.

Site Footer