StatelessWidget 与 StatefulWidget
核心定义
- StatelessWidget(无状态组件)
- 无内部状态,数据不可变(通常 final)
- 适用:UI 不随交互 / 数据变化(如静态文本)
- 典型子类:AboutDialog、CircleAvatar、Text
- build 调用时机:插入树、父组件改配置、依赖的 InheritedWidget 变化
- StatefulWidget(有状态组件)
- 可变状态,需用 setState 更新(触发 UI 重建)
- 适用:UI 需动态更新(如开关、表单输入)
- 典型子类:Checkbox、Slider、TextField、Form
- 核心:需实现 createState()生成状态管理对象
最佳实践
- 组件类型选择
- 选 Stateful:UI 随交互 / 数据变
- 选 Stateless:UI 固定不变
- Stateful 状态管理
- 三种方式:自身管理、父组件管理、混合管理
- 选择原则:
- 用户数据(如复选框状态)→ 父组件管理
- 自身动作(如动画)→ 自身管理
- 不确定 → 父组件管理