Skip to content

StatelessWidget & StatefulWidget ​

StatelessWidget ​

一个不需要可变 state 的 Widget

  • 没有状态,它们只会被渲染一次并且不会自我更新

android studio 中输入 stless 可快速创建一个 StatelessWidget

StatefulWidget ​

一个拥有可变 state 的 Widget

  • 有一个 setState 方法,用于更新 state

android studio 中输入 stful 可快速创建一个 StatefulWidget

两者区别 ​

  1. 能否自我重新构建(self rebuild)

  1. 性能消耗

StatelessWidget 相较于 StatefulWidget 性能消耗更小

每次Build都需要新建和销毁大量的Widget,Element Tree的diff,甚至繁重的渲染和重绘。所以推出 StatelessWidget 就是为了性能的考虑而对开发者进行的一些约束

StatelessWidget 类常用组件 ​

mermaid
graph LR;
A(StatelessWidget) --> B(Text)
A --> C(Icon)
A --> D(Chip)
A --> E(Divider)
A --> F(Card)
A --> G(AlertDialog)

StatefulWidget 类常用组件 ​

mermaid
graph LR;
A(StatefulWidget) --> B(Image)
A --> C(TextField)
A --> D(PageView)