前言
在Flutter中Stream
和 Future
一样都是用来处理异步操作的,但与 Future
不同的是,Stream
可以接收多个异步操作的结果,它常用于会多次读取数据的异步任务场景,如网络内容下载、文件读写等,强调的是对一个过程的监控,而Flutter只是对某个结果的监测。
即Future可以给我们一个值,且返回结果之后生命周期也就结束了,但Stream不一样,在有的文章中将他比作管道,事件处理过程中产生的一系列值顺着管道流动,源源不断,被订阅者一一接收处理,直到流管道被关闭,生命周期才结束。
看过状态管理Bolc一章的同学都知道,在Bloc中,不同的事件Event经过对应的Bloc处理最终都是返回一个一个的状态State,而这些状态State返回的形式都是流,还记得Bloc中那个async*和关键字yield的使用吗,本篇我们就来具体认识一下Flutter中的Stream。
概述
在Flutter中在Flutter中,流具体分为两类:
1,单订阅流
2,支持多订阅的广播流
不同的流对应不同的创建方式,单订阅流在发送完成事件之前只允许设置一个监听器,并且只有在流上设置监听器后才开始产生事件,取消监听器后将停止发送事件。即使取消了第一个监听器,也不允许在单订阅流上设置其他的监听器。广播流则允许设置多个监听器,也可以在取消上一个监听器后再次添加新的监听器。
Stream 有同步流和异步流之分:
它们的区别在于同步流会在执行 add,a