屏幕应该是无状态还是有状态?

时间:2019-06-14 22:14:47

标签: flutter dart

我正在开发一个具有很多屏幕和页面的应用程序。我读过某个地方,您应该尽可能使用无状态小部件。

那是为什么?

如果我有很多屏幕,那这些屏幕应该是无状态的吗?然后里面的内容是有状态的?将屏幕和小部件都设置为有状态是否更好?

2 个答案:

答案 0 :(得分:3)

您应该问自己一些有关屏幕/页面的问题,以确定它是无状态还是有状态。

  • 最明显的是,它需要更改状态吗?
  • 您需要调用initState,didChangeDependencies还是其他生命周期方法?

在不需要时将Stateful变为不当行为是一种不良做法。一个好主意可能是始终以无状态小部件开始,如果需要,您可以使用Alt + Enter快捷键(Android Studio)轻松将其更改为有状态。

答案 1 :(得分:2)

始终从创建无状态小部件开始并使用它,直到必须更改某些状态为止。因此,我可以从Intellij / AS快速使用`Alt-Enter / Convert to Statefull将其更改为有状态的。 (做逆运算并不容易,所以...)。

此外,如果您将Stateful窗口小部件与诸如流之类的异步机制一起使用,则可以一次构建该窗口小部件,并使用流来更新所需的信息,这不会对应用程序的性能产生太大影响。但是,如果您多次调用setState,则可能会使您的应用程序降级,因为对于每个setState,都会重建小部件树。

article from the flutter文档显示了有关在Flutter应用中处理状态变化的有趣提示: