美文网首页
Flutter生命周期

Flutter生命周期

作者: 宇轩Simid | 来源:发表于2020-06-17 19:00 被阅读0次
  • 生命周期

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

    1. Stateless
      • 1、构造方法
      • 2、build 方法
    2. Stateful(包含两个对象Widget、State)
      • 1、Widget的构造方法
      • 2、Widget的CreateState
      • 3、State的构造方法
      • 4、State的initState 方法
      • 5、didChangeDependencies()// 改变依赖关系
        • 依赖的InheritedWidget发生变化之后,方法也会调用。(InheritedWidget数据共享,所在树最顶节点以下的所有子部件都可以进行数据共享,为了解决Widget间及子部件的数据传递)
      • 6、State的build
        1. 当调用setState方法,会重新调用build进行渲染。element.markNeedsBuild()
        2. element就是context
      • 7、当Widget销毁的时候,调用State的dispose
  • Widget 的渲染原理

    1. 并不是所有的Widget都会被独立渲染,只有继承RenderObjectWidget才会被独立渲染,在Flutter渲染的流程中,有三颗重要的树,Flutter引擎针对Render树进行渲染
    • Widget树、Element树、Render树
      • 每一个Widget都会创建一个Element对象,隐式调用createElement()方法,将element加入Element树,它会创建三种Element(RenderObjectElement、StatefulElement、StatelessElement)
        1. RenderObjectElement:主要是创建RenderObject对象(继承RenderObjectWidget的Widget会创建RenderObjectElement)
          1. 创建RanderObjectElement
          2. Flutter会调用mount方法,调用createRanderObject()方法
        2. StatefulElement:继承ComponentElement
          1. 调用creatElement(),创建Element
          2. 调用creatState(),创建State
          3. 将Widget赋值给state.widget
          4. 调用state的build方法,并将自己(Element)传出去(build里面的context就是Widget的Element)
        3. StatelessElement:继承ComponentElement
          1. 调用creatElement(),创建Element
          2. 调用build方法,并将自己(Element)传出去(build里面的context就是Widget的Element)

相关文章

网友评论

      本文标题:Flutter生命周期

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