为什么选择StatefulWidget呢?
- StatelessWidget通常用来展示哪些数据固定不变的,如果数据会发生改变,我们使用StatefulWidget;
- Flutter在设计的时候就决定了一旦Widget中展示的数据发生变化,就重新构建整个Widget
- Flutter通过
@immutable定义到Widget中的成员变量必须是final的;1
2
3
4
abstract class Widget extends DiagnosticableTree {
// ...省略代码
} - 因此通过State记录状态变化,详见StatefulWidget结构
StatefulWidget结构
- 也就是你创建StatefulWidget时必须创建两个类:
- 一个类继承自StatefulWidget,作为Widget树的一部分;
- 一个类继承自State,用于记录StatefulWidget会变化的状态,并且根据状态的变化,构建出新的Widget;
1
2
3
4
5
6
7
8
9
10
11
12
13
14class MyStatefulWidget extends StatefulWidget {
State<StatefulWidget> createState() {
// 将创建的State返回
return MyState();
}
}
class MyState extends State<MyStatefulWidget> {
Widget build(BuildContext context) {
return <构建自己的Widget>;
}
}
StatefulWidget生命周期
%E6%9C%89%E7%8A%B6%E6%80%81%E7%9A%84StatefulWidget/640.webp)