Flutter的一些知识点

103 阅读1分钟

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…