【发布时间】:2019-06-14 22:14:47
【问题描述】:
我正在开发一个包含大量屏幕和页面的应用。我在某处读到您应该尽可能使用无状态小部件。
为什么会这样?
如果我有很多屏幕,它们应该是无状态的吗?然后里面的内容是有状态的?让屏幕和小部件都处于有状态状态会更好吗?
【问题讨论】:
我正在开发一个包含大量屏幕和页面的应用。我在某处读到您应该尽可能使用无状态小部件。
为什么会这样?
如果我有很多屏幕,它们应该是无状态的吗?然后里面的内容是有状态的?让屏幕和小部件都处于有状态状态会更好吗?
【问题讨论】:
你应该问自己一些关于屏幕/页面的问题,以决定它是无状态的还是有状态的。
在不需要时进行有状态的做法是一种不好的做法。一个好主意可能是始终作为无状态小部件开始,如果需要,您可以使用 Alt + Enter 快捷方式(Android Studio)轻松将其更改为有状态。
【讨论】:
我总是首先创建一个无状态小部件并使用它,直到我必须更改某些状态。所以我可以快速使用 `Alt-Enter/ Convert to a Statefull from Intellij/AS 将其更改为有状态。 (做逆不是那么容易,所以...)。
此外,如果您使用带有一些异步机制的 Stateful 小部件,例如流,您可以构建一次小部件并使用流来更新您需要的信息,它不会对您的应用程序的性能产生太大影响。但是如果你多次调用 setState,这可能会降低你的应用程序,因为对于每个 setState,Widget 树都会被重建。
这个article from the flutter 文档展示了关于在 Flutter 应用中处理状态变化的有趣技巧:
【讨论】: