RxDart框架学习

一、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有三种类型:

  1. PublishSubjects: PublishSubjects支持添加多个监听。
    在这里插入图片描述

输出结果:
在这里插入图片描述

由于第二个监听之前在第一个数据添加后再监听的,所以第一条数据没有监听到。

  1. BehaviourSubject:每一个新添加的监听,接收到的第一个数据都是上一个的数据(注:只会缓存一个数据)
    在这里插入图片描述

输出结果:
在这里插入图片描述

我们发现第二个监并没有监听到data1,但是可以监听到data2,而且第二个监听会比第一个监听先监听到data3,这是由于你不能决定多个监听的顺序,一般来说都是后加的监听会先接收到数据,不过每个监听所获取到的数据还是有序的。

  1. ReplaySubject:回放已经推送过的事件。
    在这里插入图片描述

    输出结果:
    在这里插入图片描述

    为了防止内存溢出,当你不再收听subject时,请一定要记得释放它。

四、常用操作符

  1. map
    map可以让我们迭代的每一个数据处理并返回一个新的数据。
    在这里插入图片描述

输出结果: [2,3,4,5]

  1. flatmap
    如果迭代的对象里也有数组的子项,而我们恰好要遍历对象数组中的子项,正常我们需要使用两个for循环来遍历输出,而如果我们用flatmap的话便可以轻松遍历;
    在这里插入图片描述

输出结果: [1, 2, 5, 3, 6, 4, 7, 8],这里要注意的是输出的结果也是无序的。

  1. expand
    expand可以让我们把每个子项扩展成n多个对象。
    在这里插入图片描述

输出结果: [1, 11, 2, 12, 3, 13, 4, 14]

  1. merge
    merge可以让我们合并多个流。
    在这里插入图片描述

输出结果[1, 2, 5, 3, 6, 4, 7, 8],这里也要注意输出的结果是无序的。
这里只是列举了一些比较常用的操作符,RxDart还有很多非常有用的方法,比如( interval、throttle、skipUntil等等 ),详细可以参照官方文档。

五、总结

我们在平时的项目中使用RxDart,可以方便我们在业务层实现代码逻辑相分离,大大简化代码逻辑。提高程序的响应速度。当然也不是要我们的代码都使用。如果是为了使用而使用,反而会把简单问题复杂化。
以上介绍仅仅是对RxDart的一个入门简介,还有很多的Rx相关技术等待我们去挖掘。只是通过希望这边文章,给大家在平时的开发中提供更多的思路。

作者:林晓峰

猜你喜欢

转载自blog.csdn.net/ekcchina/article/details/130326605