flutter 使用可变的StatelessWidgets而不是StatefulWidgets时的性能改进

dnph8jn4  于 2023-05-19  发布在  Flutter
关注(0)|答案(1)|浏览(98)

最近我开始使用StreamBuildersValueListenableBuilder,而不是使用setState重建整个树。这让我想知道在“可变”StatelessWidget而不是StatefulWidget中使用这些状态机制是否会提高性能。
尽管如此,我一直在对重建和调用者进行一些测试,以评估在类上提升这些状态(使用StatefulWidget和可变StatelessWidget)和将调用者放在(Stream|ValueListenable)Builder中(在不可变StatelessWidget上)是否有区别,但得出的结论是,它们调用的时间完全相同,重建的方式也完全相同。
我知道如果小部件本身嵌套在另一个改变其状态的(Stream|ValueListenable)Builder下,情况就不会如此,但我想知道依赖于在其生存期内不调用setStateStatefulWidget和依赖于由于提升而不能在其构造函数中具有constStatelessWidget之间是否有区别。(根据性能最佳实践,第2点第3分:https://docs.flutter.dev/perf/best-practices
TLDR:选择一个不能在其构造函数中包含constStatelessWidget,而不是不调用setStateStatefulWidget,有什么好处吗?
例如:https://gitlab.com/-/snippets/2531761

2uluyalo

2uluyalo1#

经过不断的分析和折腾,我得出的结论是,这两种方法之间没有明显的区别。出于风格上的考虑,每当需要使用提升的非常量变量时,最好使用StatefulWidget

相关问题