在Flutter中,Widget 的生命周期是由其状态对象来管理的。以下是Flutter中常见的生命周期方法:
StatefulWidget 的生命周期方法:
- createState: 在 Widget 被创建时调用,用于创建关联的 State 对象。
@override
State<MyWidget> createState() => _MyWidgetState();
- initState: 在 State 对象被插入树中时调用,只会调用一次。通常用于初始化操作。
@override
void initState() {
super.initState();
// Your initialization code here
}
- didChangeDependencies: 在依赖的对象发生变化时调用。在 Widget 第一次创建时,会在 initState 之后立即调用一次。
@override
void didChangeDependencies() {
super.didChangeDependencies();
// Called when dependencies change
}
- build: 构建 Widget 树的方法,它决定了 Widget 的外观。
@override
Widget build(BuildContext context) {
// Your UI code here
}
- didUpdateWidget: 在父 Widget 重建时调用,可以在此方法中处理新旧 Widget 的区别。
@override
void didUpdateWidget(covariant MyWidget oldWidget) {
super.didUpdateWidget(oldWidget);
// Called when the widget is updated
}
- setState: 用于通知框架,状态已经改变,需要重建 Widget 树。通常在异步操作完成后调用。
void _updateState() {
setState(() {
// Update the state
});
}
- deactivate: 在 Widget 被移除时调用,可以在此方法中释放资源。通常会伴随着 Widget 的销毁。
@override
void deactivate() {
// Called when the widget is removed from the tree
super.deactivate();
}
- dispose: 在 State 被永久移除时调用,通常用于释放资源。在 deactivate 之后调用。
@override
void dispose() {
// Called when the state is permanently removed
super.dispose();
}