gpt4 book ai didi

flutter - 在 Flutter 中, `build` 是如何从根到叶发生的?

转载 作者:行者123 更新时间:2023-12-04 10:45:46 24 4
gpt4 key购买 nike

我已经尝试通过源头来回答这个问题,但我对 Flutter 机制有点迷失。我们通过runApp一个小部件,它成为我们应用程序的根小部件。该小部件必须实现 build ,它返回一个小部件。

Flutter 是否只是使用简单的递归调用 build在返回的 Widget 上,依此类推,对于每个后续子节点的 build 返回的 Widget方法?

在递归过程中,遇到 StatelessWidget,Flutter 是否会进行类型检查以调用 createState而不是 build ,然后执行一个额外的步骤,调用 build上状态createState返回?

build 的递归/调用链是如何进行的?方法停止?例如,文本小部件有一个 build方法返回一个 RichText 小部件,它是一个 MultiChildRenderObjectWidget。 Flutter 是否再次在此处进行类型检查并停止调用 build而是调用 createElement ,到底哪个生成元素树的元素?

最佳答案

它比简单的递归更复杂。

您可以在此处阅读有关小部件的构建和渲染过程的更多信息
https://api.flutter.dev/flutter/widgets/WidgetsBinding/drawFrame.html

虽然小部件是不可变的, Elements 是它们的实例化。所以虽然StatelessWidget s 和 StatefulWidget s 在每个构建中重新创建,Element s 在树中更新。
StatefulWidgetStatefulElement 管理将状态实例保留在其实例中,因此在重建 StatefulWidget 时它会持续存在

文档对什么是 Element 有很好的解释。也:
https://api.flutter.dev/flutter/widgets/Element-class.html

关于flutter - 在 Flutter 中, `build` 是如何从根到叶发生的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59717435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com