StatefullWidget 和 StatelessWidget 在性能方面有什么区别?

Ped*_*ngo 7 flutter flutter-layout

如果我们只是在 StatelessWidget 上使用 StatefullWidget,反之亦然,是否会对性能产生影响?

在我看来,我们只是StatefullWidget用于更新 UI 的一部分setState(),有一种方法可以在 中设置一些代码initState()并在dispose()函数中处理一些东西。因此,当我不需要这些东西时,我会继续使用StatelessWidget.

但是这两个最常用的小部件之间的真正性能影响是什么?

Rém*_*let 6

在性能方面, aStatelessWidget几乎与StatefulWidget带有空的a 相同State

写作:

class Example extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}
Run Code Online (Sandbox Code Playgroud)

或者:

class Example extends StatefulWidget {
  @override
  _ExampleState createState() => _ExampleState();
}

class _ExampleState extends State<Example> {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}
Run Code Online (Sandbox Code Playgroud)

不会对您的应用程序的性能产生任何明显的影响。

使用StatelessWidget这里确实有一点收获。但它小得可笑:

它们之间的区别可以概括为调用空函数与不调用它。有一点,但绝对无所谓。


原因是,在内部实现StatefulWidgetStatelessWidget几乎相同。

StatelessWidget 确实拥有所有额外的生命周期StatefulWidget。它有一个“initState”/“dispose”。甚至一个setState!它们只是不是公共 API 的一部分。