Flutter架构逻辑:
1.Emebedder, 嵌入层,包括一些配置线程、surface
2.Engine层:包括skia渲染引擎和Dart运行引擎,Text文字排版
3.FrameWork: UI封装,比如动画、图形绘制,手势识别....
Flutter的渲染策略:
Everything is widget
核心:
widget
element
RenderObject
绘制流程
1.布局,widget Tree
2.绘制
3.合成
4.渲染
渲染树交给skia引擎,skia引擎转化为二维图像数据,通过OpenGL接口转交给GPU渲染。
顶点着色器 => 形状装配 => 几何着色器 => 光栅化 => 片段着色器 => 测试与混合。
flutter完全和之前的view架构体系不同。
Flutter的核心:
widget,只是用于描述元素的配置信息。尽管如此,在flutter中,一切都是widget。 我声明一个App,是一个widget;声明一个page是一个widget。
widget首先分为 statelessWidget, statefulWidget.
前者是不变,后者是可以改变。
不变也是可以绑定数据的,但是绑定数据之后不可修改,只能构造传入一次数据,没有set的办法。 常见的有 Text,Row
改变是可以动态改变的widget,这个才是比较常用的。引申出概念state。
state改变的时候,能够重构本节点,以及子widget,用于UI改变。
所以梳理来说:
statefulWidget--->state
initState
didChangeDenpendicies ----> 初始化或者继承关系改变的时候调用
build
didUpdateWidget
deactivate
dispose
state的核心 context
其他
TextFiled更新数据:TextEditingController
参考文档:
kaynewbie.github.io/2019/07/28/… blog.csdn.net/zl186035435… book.flutterchina.club/chapter3/te…