Flutter:何时创建无状态或有状态页面?

Posted

技术标签:

【中文标题】Flutter:何时创建无状态或有状态页面?【英文标题】:Flutter: When to create Stateless or Stateful page? 【发布时间】:2021-10-01 13:14:20 【问题描述】:

我是 Flutter 的新手。 Flutter 中的一切都是一个小部件,小部件有两种,一种是无状态的,一种是有状态的。了解无状态小部件是不会更改或用户无法与之交互(文本、图标等)的小部件,而有状态小部件是会因用户交互而改变其状态的小部件。

当我们想要创建一个新的自定义页面时,我们通常会从 StatelesWidget 或 StatefulWidget 扩展页面。既然 StatelesWidget 可以有 StatefulWidget 作为它的子元素,反之亦然,那么我们什么时候应该将页面扩展为 StatefulWidget 或 StatelessWidget?

谢谢。

【问题讨论】:

看这个:***.com/a/45945202/6915572 【参考方案1】:

如果页面本身具有某种状态,那么它应该是一个有状态的小部件。例如,您想远程加载某些内容,并在获取数据时显示进度指示器。加载完成后,页面的状态会发生变化,而不是进度指示器,您会显示任何您想要的内容。

但也有可能页面本身是一个无状态的小部件,并且有一个子小部件,例如一个容器,并且这个容器是有状态的,管理上述远程加载或依赖于某种用户交互。

状态管理是 Flutter 中的核心问题,您有很多选择,但要找到最佳选择并不总是那么容易。您可以轻松地与框架抗争,而不是让它为您完成工作。如果您是新手,我建议您观看一些视频,它们对我帮助很大,例如 this 或 this。

【讨论】:

以上是关于Flutter:何时创建无状态或有状态页面?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter StatefulWidget 有状态组件页面上绑定数据改变页面数据

何时在无状态会话 bean 上使用有状态会话 bean?

Flutter:继承自抽象的无状态小部件

Flutter 状态管理(BloC):无状态与有状态小部件

有状态的 Web 服务有多好和/或有多必要?

Flutter 中的有状态和无状态小部件之间的关系是啥?