如果我们仅在StatelessWidget上使用StatefullWidget,反之亦然,会对性能产生影响吗?
以我的观点,我们只是使用StatefullWidget
进行某些操作,例如使用setState()
更新UI的一部分,可以在initState()
中设置一些代码并在dispose()
函数中进行处理。因此,当我不需要这些东西时,请继续使用StatelessWidget
。
但是,这两个最常用的小部件之间真正的性能影响是什么?
最佳答案
在性能方面,StatelessWidget
几乎与带有空StatefulWidget
的State
相同。
写作:
class Example extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container();
}
}
或者:
class Example extends StatefulWidget {
@override
_ExampleState createState() => _ExampleState();
}
class _ExampleState extends State<Example> {
@override
Widget build(BuildContext context) {
return Container();
}
}
不会对您的应用程序的性能产生任何明显的影响。
在这里使用
StatelessWidget
确实确实获得了很小的 yield 。但这太小了:它们之间的区别可以概括为调用一个空函数与不调用一个空函数。是的,但是绝对没有关系。
原因是,内部
StatefulWidget
和StatelessWidget
的实现几乎相同。StatelessWidget
确实具有StatefulWidget
拥有的所有额外生命周期。它具有“initState”/“dispose”。甚至是
setState
!它们只是不属于公共(public)API的一部分。
关于flutter - StatefullWidget和StatelessWidget关于性能的区别是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59245350/