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,
优先权。动画,
调试标签:“许可证”,
);
解释得很好!非常感谢。