Flutter的生命周期

生命周期的基本概念:

  1. 生命周期的本质就是回调方法;
  2. 可以通过封装好的回调方法获取widget状态;

有什么作用:

  1. 监听widget的事件;
  2. 初始化数据:
  • 创建数据;
  • 发送网络请求;
  1. 内存管理:
  • 销毁数据,销毁监听者;
  • 销毁Timer等等;

Widget的生命周期:

1. Stateless:

  • 构造方法,
  • build方法;

2. Stateful(包含两个对象:Widget,State):

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

依赖的inheritedWidget发生改变后,方法也会调用!

  • State的build:
  • 当调用setState方法,会重新调用build进行渲染!
  • 当Widget销毁的时候,调用State的dispose;

Widget的渲染原理

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

Widget树, Element树, Render树

  • 每一个Widget都会创建一个Element对象:
  • 隐式调用createElement方法.Element加入Element树(会创建三种Element)
  • RenderElement主要创建RenderObject对象(继承RenderObjectWidget的Widget会创建RenderElement)
  • 创建RenderElement
  • 创建RenderElement后,Flutter会调用mount方法,mount方法调用createRenderObject方法且mount会调用build方法
  • StatefulElement继承ComponentElement(StatefulWidget会创建StateFulElement):
  • 调用createState方法,创建State;
  • 将Widget赋值给state;
  • 调用state的build方法,并且将自己(Element)传出去(build里面的context就是Widget的Element!)
  • StatelessElement继承ComponentElement(StatelessWidget会创建StatelessElement):
  • 主要就是调用build方法并且将自己(Element)传出去!

你可能感兴趣的:(Flutter的生命周期)