美文网首页
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