Flutter tutorial – 2.11 Reactive Programming với RxDart
Trong bài viết trước Báo Flutter đã giới thiệu về Stream, bài viết này cũng về một chuyên đề liên quan đến stream đó là reactive programming với RxDart. Vậy reactive programming, RxDart là gì? và cách sử dụng nó như thế nào, mời các bạn cùng theo dõi.
Reactive Programming là gì ?
Reactive Programming là hoạt động lập trình với các stream với dữ liệu bất đồng bộ (asynchronous data streams)
Tất cả các dữ liệu bất đồng bộ (asynchronous data) như: events, messages, calls, thậm chí cả các lỗi sẽ được “chuyên chở” bởi stream. Trong lập trình bất đồng bộ, developer sẽ tạo ra và sử dụng các stream đó, tương tác, xử lý dữ liệu từ stream.
( Nguồn: developers.redhat.com)
RxDart là gì ?
RxDart là một thư viện hỗ trợ trong việc thực thi Reactive Programming, được viết bằng ngôn ngữ Dart, do fluttercommunity.dev phát hành.
Cách khai báo: Thêm trong file: pubspec.yaml : Ví dụ rxdart: ^0.24.0
RxDart thường được sử dụng trong các ứng dụng sử dụng kiểu kiến trúc : Bloc Pattern
(Nguồn: www.didierboelens.com )
* Các widget gửi event đến BLoC thông qua các Sink
* BLoC gửi thông báo đến các widget thông qua các Stream
Một số class trong RxDart hay dùng
Observable
Observable cho phép gửi thông báo từ Bloc đến các widget, sau đó các Widget này sẽ quan sát, xử lý các dòng data trong các stream.
Lớp này kế thừa từ Stream vì vậy tất cả các phương thức trong Stream class sẽ dùng được trong Observable.
PublishSubject
PublishSubject cho phép gửi data, error hay các sự kiện đến khối bloc thông qua Sink.
BehaviourSubject
BehaviourSubject tương tự như PublishSubject, nó cũng cho phép gửi data, error và các sự kiện đến listener ( khối Bloc) thông qua Sink nhưng khác ở chỗ những item mới nhất sẽ được thêm vào subject và sẽ gửi đến bất cứ listener mới nào.
ReplaySubject
ReplaySubject cũng tương tự như PublishSubject , nó cũng gửi data, error và các sự kiện tới listener nhưng với sự khác biệt là ở chỗ: khi item được thêm vào subject, ReplaySubject sẽ lưu trữ nó và khi stream được lắng nghe, những item đã ghi sẽ được chuyển đến cho listener.
Việc sử dụng RxDart sẽ được giới thiệu cụ thể trong chương IV. Kiến trúc ứng dụng trong Flutter cụ thể là Bloc Pattern.
Như vậy, Các bạn đã hiểu reactive programming là gì và khi nhắc đến reactive programming bạn có thể hiểu là đó là phương pháp thực thi lập trình bất đồng bộ với stream, và có một công cụ thực thi đó là RxDart, đây là thư viện cung cấp các Stream API rất tiện lợi và thường được dùng trong kiến trúc Bloc sẽ được nhắc đến trong chương IV.
Chúc các bạn có được nhiều kiến thức từ blog của Báo Flutter.