[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LnRUZ45G-1630491413971)(https://ducafecat.tech/2021/09/01/translation/exploring-streambuilder-in-flutter/2021-09-01-17-37-55.png)]
原文
https://medium.com/flutterdevs/exploring-streambuilder-in-flutter-5958381bca67
正文
异步交互可能需要一个理想的机会来进行总结。偶尔,在周期结束之前可能会发出一些值。在 Dart 中,您可以创建一个返回 Stream 的容量,该容量可以在异步进程处于活动状态时发射一些值。假设您需要根据一个 Stream 的快照在 Flutter 中构造一个小部件,那么有一个名为 StreamBuilder 的小部件。
在这个博客中,我们将探索 Flutter 中的 StreamBuilder。我们还将实现一个演示程序,并向您展示如何在您的 Flutter 应用程序中使用 StreamBuilder。
介绍:
StreamBuilder 可以监听公开的流,并返回小部件和捕获获得的流信息的快照。造溪者提出了两个论点。
A stream
构建器,它可以将流中的多个组件更改为小部件
Stream 像一条线。当您从一端输入值而从另一端输入侦听器时,侦听器将获得该值。一个流可以有多个侦听器,这些侦听器的负载可以获得流水线,流水线将获得等价值。如何在流上放置值是通过使用流控制器实现的。流构建器是一个小部件,它可以将用户定义的对象更改为流。
建造者:
要使用 StreamBuilder,需要调用下面的构造函数:
const StreamBuilder({
Key? key,
Stream<T>? stream,
T? initialData,
required AsyncWidgetBuilder<T> builder,
})
实际上,您需要创建一个 Stream 并将其作为流争用传递。然后,在这一点上,您需要传递一个 AsyncWidgetBuilder,该 AsyncWidgetBuilder 可用于构造依赖于 Stream 快照的小部件。
参数:
下面是 StreamBuilderare 的一些参数:
Key? key
: 小部件的键,用于控制小部件如何被另一个小部件取代Stream<T>? stream
: 一个流,其快照可以通过生成器函数获得T? initialData
: 将利用这些数据制作初始快照required AsyncWidgetBuilder<T> builder
: 生成过程由此生成器使用
如何实现 dart 文件中的代码:
你需要分别在你的代码中实现它:
让我们创建一个流:
下面的函数返回一个每秒生成一个数字的 Stream。你需要使用 async * 关键字来创建一个流。若要发出值,可以使用 yield 关键字后跟要发出的值。
Stream<int> generateNumbers = (() async* {
await Future<void>.delayed(D