flutter 的生命周期
StatefulWidget 的生命周期方法:
createState: 创建与StatefulWidget相关联的State对象。
dartCopy codeclass MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
State 对象的生命周期方法:
initState: 在State对象被插入树中时调用,这个方法只会被调用一次。didChangeDependencies: 在initState之后调用,表示State对象的依赖关系发生变化。build: 构建 Widget 树的主要方法。didUpdateWidget: 当父 Widget 重建时调用。如果父 Widget 重建时需要重新配置子 Widget,则会调用此方法。deactivate: 当State对象从树中被移除时调用。在这之后,State对象可能会被重新插入树中。activate:当State对象被重新插入树中 时调用,一般不会使用dispose: 当State对象被永久从树中移除时调用。通常在这里释放资源。
dartCopy codeclass _MyWidgetState extends State<MyWidget> {
@override
void initState() {
super.initState();
// 在此执行初始化操作
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
// 在此处理依赖关系变化
}
@override
Widget build(BuildContext context) {
// 在此构建 Widget 树
return Container();
}
@override
void didUpdateWidget(MyWidget oldWidget) {
super.didUpdateWidget(oldWidget);
// 在此处理 Widget 更新
}
@override
void deactivate() {
// 在此处理 State 对象从树中被移除的操作
super.deactivate();
}
@override
void activate() {
// 在此处理 State 对象被重新插入树里
super.activate();
}
@override
void dispose() {
// 在此释放资源
super.dispose();
}
}
这些生命周期方法提供了对应用程序状态变化时执行操作的机会,你可以根据需求在这些方法中添加逻辑。要注意的是,StatefulWidget 的生命周期与 State 对象的生命周期是相关的,但不完全相同。
StatelessWidget 的生命周期方法:
build: 构建 Widget 树的主要方法。
dartCopy codeclass MyWidget extends StatefulWidget {
@override
Widget build(BuildContext context) {
return Widget;
}
}