深入理解Dart的Stream
文件大小: 162k
源码售价: 10 个金币 积分规则     积分充值
资源说明:深入理解 Dart 的 Stream Dart 的 Stream 是一个非常有用的工具,用于处理异步事件。它能够帮助应用处理诸如请求网络、用户交互等问题。在这里,我们将深入了解 Dart 的 Stream,了解它的概念、特点和使用方法。 什么是 Stream Stream 是一个非常有特点的工具,但却不太好理解。我们可以把它看作一个工厂或者机器。这个机器有一个入口,可以放东西或指令;它不知道入口什么时候会放东西进来;中间的机器能够生产或加工,这应该会耗费一些时间;它有一个出口,应该会有产品从那出来。整个过程都是以异步的眼光来看的。 StreamController StreamController 是创建流的一种方式。它有一个入口,叫做 sink,可以使用 add 方法放东西进来,放进去以后就不再关心了。StreamController 也有一个出口,叫做 stream,机器处理完毕后就会把产品从出口丢出来,但是我们并不知道什么时候会出来,所以我们需要使用 listen 方法一直监听这个出口。 如何使用 Stream 使用 Stream 的方法有多种,包括: * 通过构造函数 * 使用 StreamController * IO Stream Stream 有三个构造方法: * Stream.fromFuture:从 Future 创建新的单订阅流,当 future 完成时将触发一个 data 或者 error,然后使用 Down 事件关闭这个流。 * Stream.fromFutures:从一组 Future 创建一个单订阅流,每个 future 都有自己的 data 或者 error 事件,当整个 Futures 完成后,流将会关闭。如果 Futures 为空,流将会立刻关闭。 * Stream.fromIterable:创建从一个集合中获取其数据的单订阅流。 监听 Stream 监听一个流最常见的方法就是 listen。当有事件发出时,流将会通知 listener。Listen 方法提供了这几种触发事件: * onData:收到数据时触发 * onError:收到 Error 时触发 * onDone:结束时触发 * unsubscribeOnError:遇到第一个 Error 时是否取消订阅,默认为 false Transforming an existing stream 如果你已经有了一个流,你可以通过它转化成为一条新的流。流提供了 map()、where()、expand()、和 take() 方法,能够轻松将已有的流转化为新的流。 * where 如果你想要筛选掉一些不想要的事件。例如一个猜数游戏,用户可以输入数字,当输入正确的时候,我们做出一定反应。而我们必须筛选掉所有错误的答案,这个时候我们可以使用 where 筛选掉不需要的数字。 * take 如果你想要控制这个流最多能传多少个东西。比如一个聊天应用,你可以使用 take 方法来控制聊天记录的数量。 Stream 是一个非常有用的工具,能够帮助我们处理异步事件。通过了解 Stream 的概念、特点和使用方法,我们可以更好地使用它来开发出色的应用程序。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。