美文网首页
Flutter生命周期

Flutter生命周期

作者: 阿木小丸子 | 来源:发表于2020-11-22 12:53 被阅读0次

生命周期的基本概念:

1、什么是生命周期?
  • 说白了就是回调方法(函数)
  • 让你知道我封装好的这个widget它处于什么状态了!
2、生命周期有什么作用?
  • 监听widget的事件
  • 初始化数据(* 创建数据; *发送网络请求)
  • 内存管理
    * 销毁数据、销毁监听者
    * 销毁Timer等

Widget的生命周期:

1、StatelessWidget:

生命周期:

  • 构造函数
  • build
2、StatefulWidget

包含两个对象Widget、State

生命周期:

  • Widget构造方法
  • Widget的CreatState
  • State的构造方法
  • State的initState方法
  • didChangeDependencies方法(改变依赖关系)

    依赖的InheritedWidget发生变化之后,也会调用

class MyData extends InheritedWidget {
  MyData({this.data, Widget child}) : super(child:child);
  final int data; //需要在子Widget中共享的数据

  //提供一个方法让子Widget访问我们的共享数据
  static MyData of(BuildContext context) {
    return context.dependOnInheritedWidgetOfExactType<MyData>();
  }

  @override
  bool updateShouldNotify(MyData oldWidget) {
    return oldWidget.data != data;
  }
}

  • State的build

    当调用setState方法,会重新调用build进行渲染

  • 当Widget销毁的时候,调用State的dispose

Widget渲染原理:

并不是所有的Widget都会被独立渲染,只有继承RenderObjectWidget的才会创建RenderObject对象。(RenderObject创建后,被加入到Render Tree中)。
在Flutter的渲染流程中,有三颗重要的树!Flutter引擎是针对Render树进行渲染。

  • Widget树、Element树、Render树
    -- 每一个Widget都会创建一个Element对象
    • 隐式调用createElement方法,Element加入Element树中, 它会创建三种Element

      • RenderElement 主要创建RenderObject对象(继承RenderObjectWidge的Widget会创建RenderElement)

        • 创建RanderElement
        • Flutter会调用mount方法,调用createRanderObject方法
      • StatefulElement继承ComponentElement(StatefulWidget会创建StatefulElement)

        • 调用createState方法,创建State
        • 将Widget赋值给state
        • 调用state的build方法,并且将自己(Element)传出去「build里面的context就是Widget的Element
      • StatelessElement继承ComponentElement(StatelesslWidget会创建StatelessElement)

        • 主要就是调用build方法,并且将自己(Element)传出去

相关文章

网友评论

      本文标题:Flutter生命周期

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