首页 > 其他分享 >RxDart框架学习

RxDart框架学习

时间:2023-04-23 17:56:29浏览次数:40  
标签:输出 框架 Stream 结果 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相关技术等待我们去挖掘。只是通过希望这边文章,给大家在平时的开发中提供更多的思路。

作者:林晓峰

标签:输出,框架,Stream,结果,RxDart,我们,学习,监听
From: https://www.cnblogs.com/DTCLOUD/p/17347262.html

相关文章

  • Markdowm学习
    #Markdowm学习标题##二级标题###三级标题#字体**Hello,world!***Hello,world****Hello,worid!***~~Hello,world!~~#引用>##分割线---##图片![截图](E:\新建文件夹(2)\屏幕截图2022-11-12165730.png)![图片]()##超链接[点击跳转](http://m.jrj.com.cn/......
  • Vue 项目安全扫描漏洞,JS 库版本太低,要求升级 YUI(vue2 升级javascript库)【检测到目标站
    原帖:https://blog.csdn.net/u012961419/article/details/130016341背景公司信安部门对项目进行安全扫描,查出一些漏洞,其中有一项要求升级javascript框架库(如图): 吓得我以为让我把Vue2升级成Vue3。经过一番询问后才知道,是工具包中依赖的YUI是存在安全漏洞的版本。漏洞定......
  • web前端三大主流框架对比
    关注我了解更多web前端技术知识,带你一路“狂飙”到底!上岸大厂不是梦!web前端开发框架是在前端工程师中经常会用到的内容,可以大大减少项目中的bug,节约开发成本,加快项目周期。在使用web前端开发框架之前,需要先了解web前端三三大主流框架有哪些。目前web前端三大框架Angular、R......
  • web前端三大主流框架对比分析
    web前端开发框架是在前端工程师中经常会用到的内容,可以大大减少项目中的bug,节约开发成本,加快项目周期。在使用web前端开发框架之前,需要先了解web前端三三大主流框架有哪些。目前web前端三大框架Angular、React、Vue,这三种框架各有优势,下面将对web前端三大主流框架对比、分析......
  • SRS流媒体服务器之HTTP-FLV框架分析
    SRS流媒体服务器之HTTP-FLV框架分析链接:https://www.isolves.com/it/cxkf/kj/2021-03-25/37488.html介绍的代码和现版本代码有出处,但对流程序的理解有相当的价值。简要笔记如下。整体的框架:RTMP推流端-----》SRS流媒体服务器(建立SOURCE->生成Consumer->指定封装格式endoder=F......
  • Vue的学习笔记(下篇)
    一、什么是Vue.js?Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue也完全能够为复杂的单页......
  • Vue的学习笔记(中篇)
    一、什么是Vue.js?Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue也完全能够为复杂的单页......
  • ssm框架整合 理解及搭建
    如何开发一个java-web的开发模式。三大块前端后端存储。分层,首先用户的请求到view,view调后端controller,controller业务逻辑处理存储,数据模型层model。按照这种模式开发。用框架实现mvc。目前用springmvc,最早期的controller层用的是struts1,servlet,再往后是struts+hibern......
  • 「学习笔记」重修 FHQ-treap
    无旋treap的操作方式使得它天生支持维护序列、可持久化等特性。无旋treap又称分裂合并treap。它仅有两种核心操作,即为分裂与合并。通过这两种操作,在很多情况下可以比旋转treap更方便的实现别的操作。变量与宏定义#definelsch[u][0]#definersch[u][1]intcnt,r......
  • rpc学习--替换rpc序列化协议为json
    rpc概念:RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。示例代码:packagemainimport("encoding/json""log""net"......