我注意到,我们可以使用StatefulWidget来构建UI的任何部分,而不必担心状态。

我要问的是,首先,当我们可以将任何UI类构建为StatelessWidget时,是否要为其提供StatefulWidget,首先拥有State的原因是什么?

使用StatefulWidget是否会带来额外的费用,从而使使用StatelessWidget创建无状态 UI变得更容易/更快/更好吗?

当我阅读文档时,我无法确切指出在描述无状态UI组件时使用StatelessWidgetStatefulWidget之间的区别。 It is even recommended to

最佳答案

如果窗口小部件管理状态,则应将StatefulWidget与关联的State对象一起使用以存储状态。

如果您的小部件不管理任何状态,并且其构建方法仅取决于其构造函数参数(或Inherited小部件,例如Theme),则最好使用StatelessWidgetStatelessWidget需要定义更少的类并调用更少的方法,因此与不缓存任何状态的等效StatefulWidget相比,它应该更快,更可维护。

如果您遵循Push the state to the leaves性能优化,则将StatefulWidget更改为StatelessWidget,并将有状态部分分解为更简单的StatefulWidget(可以使用child参数并将其缓存)。这种模式增加了更多的类,但是具有减少状态更改时所需的工作量的好处。

10-08 16:34