Flutter 为什么Flatter中的LicenseRegistry返回流<;许可证进入>;而不是列表<;许可证进入>;?

Flutter 为什么Flatter中的LicenseRegistry返回流<;许可证进入>;而不是列表<;许可证进入>;?,flutter,licensing,flutter-dependencies,Flutter,Licensing,Flutter Dependencies,我想反驳为什么LicenseRegistry.licenses返回流而不是列表?在这里,简单的列表而不是流不是更有意义吗 dart文档说明了一个流,如下所示: 流提供了一种接收事件序列的方法。每个事件都是 数据事件(也称为流的元素)或错误 事件,它是某个事件失败的通知。当 流已发出其所有事件,单个“完成”事件将通知 监听器提示已到达终点 也许有人能解释一下许可证列表和流描述之间的关系吗 flatter文档指出,LicenseRegistry.licenses是一项昂贵的操作。 它返回的流是否与之

我想反驳为什么
LicenseRegistry.licenses
返回
流而不是
列表
?在这里,简单的列表而不是流不是更有意义吗

dart文档说明了一个流,如下所示:

流提供了一种接收事件序列的方法。每个事件都是 数据事件(也称为流的元素)或错误 事件,它是某个事件失败的通知。当 流已发出其所有事件,单个“完成”事件将通知 监听器提示已到达终点

也许有人能解释一下许可证列表和流描述之间的关系吗

flatter文档指出,
LicenseRegistry.licenses
是一项昂贵的操作。 它返回的流是否与之相关

资料来源:

当部分结果对消费者有用时,流是有用的(如此处所示)。在这种情况下,正常消费者是
LicensePage
小部件。它使用
wait for
侦听流,并在获得每个包的许可证时,使用
setState
将它们添加到页面中。这样,随着工作继续交付更多许可证,它可以开始呈现最终页面。(如果小部件仍在运行时卸载,
wait for
循环将终止,因此如果许可证页面关闭,页面的其余部分将不会格式化和呈现。)

相反,如果返回值是一个列表,则必须在呈现第一个许可证之前构建该列表

有趣的是,
LicensePage
小部件必须从iterable提供的每个
LicenseEntry
中提取段落。它将它们转换为后台任务中的列表!因此,它处理组中特定条目的每一组段落

  final List<LicenseParagraph> paragraphs =
    await SchedulerBinding.instance.scheduleTask<List<LicenseParagraph>>(
      license.paragraphs.toList,
      Priority.animation,
      debugLabel: 'License',
    );
最后列出段落=
等待SchedulerBinding.instance.scheduleTask(
license.parations.toList,
优先权。动画,
调试标签:“许可证”,
);

解释得很好!非常感谢。