flutter语音学习

Rxdart学习笔记(小白最容易理解的笔记)

2022-04-28  本文已影响0人  心猿意码_

一、rxdart是什么?

二、rxdart的功能

为了将Stream的概念可视化与简单化,可以将它想成是管道(pipe)的两端,它只允许从一端插入数据并通过管道从另外一端流出数据。
Flutter中:

从一个Stream中创建

var obs = Observable(Stream.fromIterable([1,2,3,4,5]));
  obs.listen(print);
常用操作符

1、迭代地处理数据:map

ar obs = Observable(Stream.fromIterable([1,2,3,4,5]))
    .map((item)=>++item);
    
obs.listen(print);

输出:2 3 4 5 6

1.gif
2、扩展流:expand
var obs = Observable(Stream.fromIterable([1,2,3,4,5]))
   .expand((item)=> [item,item.toDouble()]);

 obs.listen(print);

输出:1 1.0 2 2.0 3 3.0 4 4.0 5 5.0

2.gif
3、合并流:merge
var obs = Observable.merge([
    Stream.fromIterable([1,2,3]),
    Stream.fromIterable([4,5,6]),
    Stream.fromIterable([7,8,9]),
  ]);

  obs.listen(print);

输出:1 4 7 2 5 8 3 6 9

3.gif
4、检查每一个item:every
var obs = Observable.fromIterable([1,2,3,4,5]);
  obs.every((x)=> x < 10).asObservable().listen(print);

其他操作符:Where:数据过滤 Debounce:数据拦截 Distinct:过滤相同数据

Subject对象

Subject是RxDart的流控制器(StreamController),但Subject但行为跟StreamControllers还是有些区别的:

1、 PublishSubject

2、 BehaviorSubject

var subject = new PublishSubject<int>();

subject.where((val) => val.isOdd)
    .listen( (val) => print('奇数: $val'));


subject.where((val) => val.isEven)
.listen( (val) => print('偶数: $val'));


subject.add(1);
subject.add(2);
subject.add(3);

输出:
奇数: 1
偶数: 2
奇数: 3

三、总结

响应式的好处:

1、在业务层面实现代码逻辑分离,方便后期维护和拓展
2、极大提高程序响应速度,充分发掘CPU的能力
3、帮助开发者提高代码的抽象能力和充分理解业务逻辑
4、Rx丰富的操作符会帮助我们极大的简化代码逻辑

Rx的最大魅力就是让你能够在Stream上自由操作数据,每一个Rx方法都会返回一个新的Stream,同时携带了一个返回值,这意味着你可以链式调用,这是非常有用的。

先理清楚业务之间的关系,需要和并逻辑的时候,就去去查合并类的操作符,需要条件判断来分流的逻辑时去找条件判断类的操作符。

总结.gif
上一篇 下一篇

猜你喜欢

热点阅读