用户登录

在介绍 Stream 的时候我们介绍过 StreamController,就是可以控制 Stream 的东西 .. 这里我们要说的 Subject 就相当于是 StreamController .. 你可以把 Subject 想成是一些特别的 StreamController ..

RxDart 提供了几种不同类型的 Subject .. 我们可以先去创建一个 PublishSubject .. 数据的类型可以是 String .. 名字是 _subject .. 用一下 PublishSubject .. 数据类型是 String ..

用创建的这个 Subject 监听 Stream ,或者叫 Observable 的时候 .. 直接用一下这个 subject 上面的 listen 方法 ..

如果是 StreamController,我们得访问一下它的 stream 属性,然后用一下它上面的 listen 方法 .. 先给它提供一个数据处理方法 .. 就是当这个 Subject 控制的 Obserable 上面有数据的时候,我们要做的事情 ... 方法接收一个参数,名字可以叫它 data ... 然后在控制台上输出点内容 .. listen 1 ... 后面加上 $data ..

这样就相当于是给 Observable 添加了一个订阅,或者叫监听了一下这个 Observable .. 这里我们可以继续给它添加订阅 .. 复制一下这行代码 ..

修改一下在控制台上输出的内容 ... listen 2 ... 输出的这个 data 数据可以把它转换成大写字母 ..

close

不用的 subject ,我们需要把它关掉 .. 执行一下 _subject.close ..

add

subject 上面有个 add 方法可以往 observable 上面添加数据 .. 用一下 _subject 上的 add,添加一个字符串类型的数据 .. hello ..

打开调试控制台... 执行一下 hot restart .. 你会发现 .. 输出了一个 listen 1.. hello .. 因为这个 add 是在 listen 1 的下面执行的 .. 然后才添加了第二个订阅 .. 它没能收到在它之前添加的这个 hello ..

在 listen 2 的下面,再添加一个数据 .. 类型是字符串,具体的值是 hola ..

再运行一下 hot restart ...

这回你会发现 .. listen 1 还有 listen 2 都收到了这个 hola ..

使用 Subjects 控制 Observables《 Flutter 移动应用:RxDart 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点