美文网首页
StatefulWidget的生命周期

StatefulWidget的生命周期

作者: 刘铁崧 | 来源:发表于2020-11-11 11:29 被阅读0次

widget的生命周期

build构造函数调用 -> 调用build方法


statefulWidget的生命周期

class ESTest extends StatefulWidget {
  ESTest(){
    print("1.widget中调用构造方法");
  }

  @override
  _ESTestState createState(){
    print("2.widget中调用createState方法");
    return _ESTestState();
  }
}

class _ESTestState extends State<ESTest> {
  _ESTestState(){
    print("3.state中调用构造方法");
  }
  @override
  void initState() {
    // TODO: implement initState
    print("4.state中调用init方法");
    super.initState();
  }
  @override
  void didChangeDependencies() {
    print("state中调用didChangeDependencies");
    // TODO: implement didChangeDependencies
    super.didChangeDependencies();
  }
  @override
  void didUpdateWidget(ESTest oldWidget) {
    // TODO: implement didUpdateWidget
    print("state中调用:didUpdateWidget");
    super.didUpdateWidget(oldWidget);
  }
  @override
  Widget build(BuildContext context) {
    print("5.state中调用build方法");
    return Container();
  }
  @override
  void dispose() {
    // TODO: implement dispose
    print("6.state中调用销毁dispose方法");
    super.dispose();
  }
}

打印声明周期调用顺序:

Restarted application in 456ms.
flutter: 1.widget中调用构造方法
flutter: 2.widget中调用createState方法
flutter: 3.state中调用构造方法
flutter: 4.state中调用init方法
flutter: state中调用didChangeDependencies
flutter: 5.state中调用build方法
flutter: 1.widget中调用构造方法
flutter: state中调用:didUpdateWidget
flutter: 5.state中调用build方法

注意:

  • 如果调用setstate方法,会重新调用state的build方法(flutter: 5.state中调用build方法)
  • 当父widget的state触发rebuild会调用didUpdateWidget
  • mounted是state内部设置的一个属性,不需要手动进行修改(作用:用来记录widget对应的element是否为空,为空销毁,不为空挂载)
  • dirty state是通过element的属性来标记,如果为true才会重新调用build方法,调用结束会设置为false

相关文章

网友评论

      本文标题:StatefulWidget的生命周期

      本文链接:https://www.haomeiwen.com/subject/tpsvvktx.html