一、RxDart是什么?
RxDart是一个响应式编程结构,是基于 ReactiveX 的响应式函数编程库,ReactiveX是一个强壮的库,经过运用可调查的序列来编写异步的程序。它突破了语言以及平台的约束,使咱们在写异步程序的时候更简练。 ReactiveX 开发过多个语言下的响应式结构,比较有名的就是RxJava、RxSwift、RxJS、RxKotlin等等。RxDart也是其中之一,Dart本身就有 Stream 类,RxDart在其基础上供给了其他Stream类、运算符、和Subject等封装。
二、RxDart的引入
翻开咱们的flutter的项目的pubspec.yaml 文件,在dependencies 中增加依赖: rxdart: ^0.27.4;
然后在终端 flutter pub get 安装依赖就能够在项目中运用了。
三、Stream的运用
重新的版本0.23.1开端,RxDart删除了Observable相关的类,所有的功能都集成到了dart中的Stream类中了,咱们能够经过Stream.fromIterable()、Stream.fromFuture()等来创建Observables目标。 Subject是RxDart的流控制器,Subjects有三种类型:
- PublishSubjects: PublishSubjects支持增加多个监听。
输出成果:
因为第二个监听之前在第一个数据增加后再监听的,所以第一条数据没有监听到。
- BehaviourSubject:每一个新增加的监听,接收到的第一个数据都是上一个的数据(注:只会缓存一个数据)
输出成果:
咱们发现第二个监并没有监听到data1,但是能够监听到data2,而且第二个监听会比第一个监听先监听到data3,这是因为你不能决定多个监听的次序,一般来说都是后加的监听会先接收到数据,不过每个监听所获取到的数据仍是有序的。
- ReplaySubject:回放已经推送过的事件。
输出成果:
为了防止内存溢出,当你不再收听subject时,请一定要记住释放它。
四、常用操作符
- map map能够让咱们迭代的每一个数据处理并回来一个新的数据。
输出成果: [2,3,4,5]
- flatmap 假如迭代的目标里也有数组的子项,而咱们恰好要遍历目标数组中的子项,正常咱们需求运用两个for循环来遍历输出,而假如咱们用flatmap的话便能够轻松遍历;
输出成果: [1, 2, 5, 3, 6, 4, 7, 8],这儿要注意的是输出的成果也是无序的。
- expand expand能够让咱们把每个子项扩展成n多个目标。
输出成果: [1, 11, 2, 12, 3, 13, 4, 14]
- merge merge能够让咱们兼并多个流。
输出成果[1, 2, 5, 3, 6, 4, 7, 8],这儿也要注意输出的成果是无序的。 这儿仅仅列举了一些比较常用的操作符,RxDart还有许多非常有用的方法,比方( interval、throttle、skipUntil等等 ),详细能够参照官方文档。
五、总结
咱们在平时的项目中运用RxDart,能够方便咱们在事务层实现代码逻辑相别离,大大简化代码逻辑。进步程序的响应速度。当然也不是要咱们的代码都运用。假如是为了运用而运用,反而会把简略问题复杂化。 以上介绍仅仅是对RxDart的一个入门简介,还有许多的Rx相关技术等待咱们去挖掘。仅仅经过期望这边文章,给大家在平时的开发中供给更多的思路。
作者:林晓峰