1 StatelessWidget
不需要状态改变的widget,它没有要管理的内部状态。
Text,CircleAvator 都是其子类
其传递的参数别final 修饰,不可变的
无状态的widget build 方法在以下三种情况下进行调用
- 当widget 插入到数中去
- 当widget 父级更改配置的时候
- 当他依赖的inheritewidget 发生变化的时候
2 StatefulWidget
是可以改变的,使用setState管理器状态的改变。调用setState 方法,Flutter会重新运行build 方法,以便应用程序更新状态。
checkBox ,slider ,Form,Textfiled 都是有状态的Widget,也是StatefulWidget的子类
3 widget的状态选择
是有状态和无状态的,取决于是否他们依赖与状态的变化。
4 状态管理
- 每一个widget 管理自己的状态
- 父widget 管理widget的状态
- 混合搭配的管理方法
采取管理方法:
- 如果所讨论的状态是用户数据,例如复选框的选中和未选中或者是滑块的位置,状态最好由父widget来管理
- 如果widget的状态取决于用户的动作,例如动画,则最好自身来进行管理
- 如果还是不确定谁来管理状态,让父类进行管理