生命周期就是在某个特定的时刻会自动触发的函数。

flutter 生命周期的六个钩子函数大致分为四个阶段:

组件的初始化 → 创建 → 更新 → 卸载

只有我们了解了生命周期的执行顺序,才能清楚的知道我们在那些时刻应该做什么。

代码示例:



class HYHomeContent extends StatefulWidget {
// 1、执行State类的构造方法
HYHomeContent() {
print("1.调用HYHomeContent的constructor方法");
}

@override
_HYHomeContentState createState() {
print("2.调用HYHomeContent的createState方法");
return _HYHomeContentState();
}
}

class _HYHomeContentState extends State<HYHomeContent> {
int _counter = 0;
_HYHomeContentState() {
print("3.调用_HYHomeContentState的constructor方法");
}

@override
void initState() {
// 2、执行initState,通常会在这个方法中执行一些数据初始化的操作,或者也可能会发送网络请求;
// 注意:这个方法是重写父类的方法,必须调用super,因为父类中会进行一些其他操作;
// 并且如果你阅读源码,你会发现这里有一个注解(annotation):@mustCallSuper
final TextStyle style = TextStyle();
super.initState(); // 调用: 这里是必须调用super
print("4.调用_HYHomeContentState的initState方法");
}

@override
void didUpdateWidget(HYHomeContent oldWidget) {
super.didUpdateWidget(oldWidget);
// 执行didUpdateWidget方法是在当父Widget触发重建(rebuild)时,系统会调用didUpdateWidget方法;
print("didUpdateWidget");
}
// 这个方法在两种情况下会调用
@override
void didChangeDependencies() {
super.didChangeDependencies();
// 情况一:调用initState会调用;
// 情况二:从其他对象中依赖一些数据发生改变时,比如InheritedWidget;
print("调用_HYHomeContentState的didChangeDependencies方法");
}

@override
Widget build(BuildContext context) {
print("5.调用_HYHomeContentState的build方法");
return Column(
children: <Widget>[
RaisedButton(
child: Icon(Icons.add),
onPressed: () {
// 手动调用setState方法,会根据最新的状态(数据)来重新调用build方法,构建对应的Widgets;
setState(() {
_counter++;
});
},
),
Text("数字:$_counter")
],
);
}

@override
void dispose() {
// 当前的Widget不再使用时,会调用dispose进行销毁
print("6.调用_HYHomeContentState的dispose方法");
super.dispose();
}
}