Flutter 生命周期函数
生命周期就是在某个特定的时刻会自动触发的函数。
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(); } }
个人博客:https://codergzh.gitee.io/
日常工作和学习中的记录和分享
如有不对,欢迎各位大佬指导