gpt4 book ai didi

flutter - StatelessWidgets 与 StatefulWidget

转载 作者:IT王子 更新时间:2023-10-29 06:50:13 28 4
gpt4 key购买 nike

StatelessWidget 的所有代码都在一个类中,甚至包括 build 方法。对于 StatefulWidget,为什么 State 是一个独立于 Widget 的类?不能将它们组合起来,StatefulWidget 可以自己调用 setState 吗?

最佳答案

StatefulWidget 类是不可变的,并将其构造函数参数存储在 final 成员中。当其配置信息发生变化并替换为新的 StatefulWidget 时,它会被丢弃。此操作通常非常便宜,并会触发重建。

相比之下,StatefulWidget 的关联State 可以长期存在。当 StatefulWidget 被替换时,State 被重新使用,即使构造函数参数发生变化,只要树结构和键匹配。这允许您防止您的 State 被吹走,即使父级更改了有关 StatefulWidget 的某些内容。例如,您可能想在动画播放过程中更改小部件的颜色或文本,State 会注意到,因为它使用 widget getter 来读取这些值。 (这就是为什么 State 绝不能有任何构造函数参数;它必须使用 widget 来读取其配置。)

您会收到关于 didUpdateWidget 中更改内容的通知如果您想为重新配置 StatefulWidget 的情况提供特殊处理,尽管通常只需重新构建即可获得预期结果。

关于flutter - StatelessWidgets 与 StatefulWidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46107609/

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