01a0b05af446ea6a98a923343d8a7a42
更好的理解 Flutter 组件生命周期(一)

这篇文章谈 Flutter 组件的生命周期,因为对于实际开发,深入理解生命周期是必不可少的一件事。首先抛出三个问题,然后来一一解答:

  • Flutter 组件的生命周期到底是什么?
  • 为什么生命周期在 State 对象上而不是 Widget?
  • 在每个生命周期函数的背后,组件树都在做什么?

谈到 Flutter 组件的生命周期都会给出以下流程图,它清晰的标出了生命周期函数的流程:

然而我们先不详谈这些生命周期函数,而是要先从根本上去理解什么是 Flutter 组件的生命周期。

Flutter 组件的生命周期到底是什么?

其实就是当前组件节点在整个组件树,Build 流程中所处的状态,是正在初始化(initState)还是被卸载了(dispose)等等。然后把这些状态通过 State 对象的生命周期函数通知出来。Flutter 为我们提供了一个组件 StatefulWidget,通过定义它的 createState 方法,可以返回自定义的 State 对象,在 State 对象中包含了所有的生命周期函数,以及可以自定义状态属性:



class DemoWidget extends StatefulWidget {
double padding;

DemoWidget({this.padding});

@override
State createState() {
return DemoState();
}
}

class DemoState extends State {
// state
String title;

@override
void initState() {
super.initState();
title = 'Demo Title';
}

@override
void didChangeDependencies() {
// TODO: implement didChangeDependencies
super.didChangeDependencies();
}

@override
Widget build(BuildContext context) {
return Text(title);
}

top Created with Sketch.