简述 Widget 的 StatelessWidget 和 StatefulWidget 两种状态组件类

  • StatelessWidget: 一旦创建就不关心任何变化,在下次构建之前都不会改变。它们除了依赖于自身的配置信息(在父节点构建时提供)外不再依赖于任何其他信息。比如典型的 Text、Row、Column、Container 等,都是 StatelessWidget。它的生命周期相当简单:初始化、通过 build()渲染。

  • StatefulWidget: 在生命周期内,该类 Widget 所持有的数据可能会发生变化,这样的数据被称为 State,这些拥有动态内部数据的 Widget 被称为 StatefulWidget。比如复选框、Button 等。State 会与 Context 相关联,并且此关联是永久性的,State 对象将永远不会改变其 Context,即使可以在树结构周围移动,也仍将与该 context 相关联。当 state 与 context 关联时,state 被视为已挂载。StatefulWidget 由两部分组成,在初始化时必须要在 createState()时初始化一个与之相关的 State 对象。

上次更新:
贡献者: 郑壮