StatefulWidget 的生命周期安时期不同可以分为三组
1.初始化
//createState , initState
2.更新
//didChanegDependencies , bulid, didUpdateWidget
3.销毁
//deactivate , dispose
创建一个statefulWidget会立即调用createState这个方法也是必须覆盖
class CycleWidget extends StatefulWidget {
@override
_CycleWidgetState createState() => _CycleWidgetState();
}
initState是除了构造函数外的第一个方法一些初始化的工作一般都在这个方法里生命
class CycleWidget extends StatefulWidget {
@override
_CycleWidgetState createState() => _CycleWidgetState();
}
class _CycleWidgetState extends State {
@override
void initState() {
// TODO: implement initState
print('-------------');
super.initState();
}
@override
Widget build(BuildContext context) {
return Container();
}
}
更新时期的方法是didChanegDependencies当initState调用后didChanegDependencies会立即调用一次当StatefulWidget所依赖的InheritedWidget中的变量发生改变时也会马上调用他
build方法也是必须调用的didChanegDependencies调用后会马上调用他,当使用setState方法的时候也会调用build方法,比如点击按钮按钮中有setState方法则build方法就会执行
class _CycleWidgetState extends State {
@override
void initState() {
// TODO: implement initState
print('-------------');
super.initState();
}
@override
void didChangeDependencies() {
// TODO: implement didChangeDependencies
super.didChangeDependencies();
}
@override
Widget build(BuildContext context) {
print('build')
return Container(child: Column(children: [RaisedButton(onPressed: (){
setState(() {
print('!!!!!!');
});
},)],),);
}
}
didUpdateWidget也是用来更新的一个方法,当父组件需要重新绘制的时候会调用它
销毁期间当组件被移除的时候会调用deactivate方法deactivate方法会在dispose前被调用
dispose是组件被销毁时调用,一般在dispose中做通知的移除和监听器的销毁工作
作者:Slaser
链接:https://www.jianshu.com/p/225e88adb8a9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)