前言
关于Dart 语言的Stream 部分,应该回到语言本身去寻找答案,许多资料在Flutter框架中囫囵吞枣式的解释Stream,总有一种让人云山雾罩的感觉,事实上从Dart语言本身去了解Stream并不复杂,接下来就花点时间好好学习一下Stream吧!
Stream和 Future都是Dart中异步编程的核心内容,在之前的文章中已经详细叙述了关于Future的知识,请查看 Dart 异步编程详解,本篇文章则主要基于 Dart2.5 介绍Stream的知识。
什么是Stream
Stream是Dart语言中的所谓异步数据序列的东西,简单理解,其实就是一个异步数据队列而已。我们知道队列的特点是先进先出的,Stream也正是如此
在Dart语言中,
Stream有两种类型,一种是点对点的单订阅流(Single-subscription),另一种则是广播流。
单订阅流
单订阅流的特点是只允许存在一个监听器,即使该监听器被取消后,也不允许再次注册监听器。
创建 Stream
创建一个Stream有9个构造方法,其中一个是构造广播流的,这里主要看一下其中5个构造单订阅流的方法
periodic
void main(){test();}test() async{// 使用 periodic 创建流,第一个参数为间隔时间,第二个参数为回调函数Stream<int> stream = Stream<int>.periodic(Duration(seconds: 1), callback);// await for循环从流中读取await for(var i in stream){print(i);}}// 可以在回调函数中对值进行处理,这里直接返回了int callback(int value){return value;}
打印结果
01234...
