Flutter系统概述
框架图
整个Flutter系统由三部分组成,由上至下依次为:Framwork(动态库),Engine(渲染引擎),Embedder(嵌入层)。
Framwork(动态库)
Framework 层全部使用Dart 编写,它实现了一套基础库,用于处理动画、绘图和手势,并且封装了一套UI组件库,并预写了Android(MaterialDesign)和 iOS的(Cupertino)风格的UI,这个纯Dart实现的SDK被封装为了一个叫作dart:ui的Dart库,极大方便了开发移动端。
-
Material
封装了各种安卓风格的组件 -
Cupertino
为iOS风格组建集合 -
Widgets
各种widget组件的组合。flutter核心思想为“一切皆widget”,各种小组件之间进行相互组合来共同构建不同的用户界面。Flutter中widget可以是一个Text,也可以是Color,同样也可以是Container。widget类继承关系
-
Rendering
Rendering是一个界面的渲染库,在Flutter中界面的渲染主要包括三个阶段:布局(Layout),绘制(Painting),合成(Composite) -
Animation
Animation是一个动画相关类,可以通过这个类创建一些基础的动画,补间动画(Tween Animation),类似于Android中的ValueAnimator和iOS中的Core Animation -
Painting
Painting封装了来自Engine层的绘制接口 -
Gesture
处理手势动作和手势相关交互 -
Foundation
底层框架,定义底层工具类和方法,提供其他层使用
Engine(引擎)
Engine是Flutter引擎,引擎主要负责图形绘制(Skia)、文字排版(libtxt)和提供Dart运行时,引擎全部使用C++ 实现,它是dart的一个运行时,它可以以JIT、JIT Snapshot或者AOT的模式运行Dart代码
-
Skia
Skia是一个谷歌出品的开源二维图形库,提供常用的API,并且可以在多种软硬件平台上运行。和其他跨平台方案不同Flutter没有使用原生的UI 和 绘制框架,以此来保证Flutter的高性能体验 -
Dart在 JIT模式下,速度与 JavaScript基本持平。但是 Dart支持 AOT,当以 AOT模式运行时,JavaScript便远远追不上了。速度的提升对高帧率下的视图数据计算很有帮助。
Dart 语言特征 :
语言类型 : 强类型语言 ;
编译类型 : JIT 即时编译 ; ( 编译类型有 JIT / AOT 两种类型 )
JIT 即时编译 : 即时编译 , 在程序运行时一边解释一边运行 ;
1,运行时效率较低
2,可移植性强
AOT 静态编译:静态编译 , 在开发时就要将代码编译成机器码 ;
1, 运行时效率高
2, 不可移植
Embedder(嵌入层)
主要作用是考虑不同平台的特性将Flutter嵌入其中,其中主要负责的工作有:
- Render Surface Setup(渲染设置)
- Native Plugins(插件管理)
- Packaging(打包)
- Thread Setup(线程管理)
- Event Loop Interop(事件循环的交互)
本文地址:https://blog.csdn.net/qq_18133317/article/details/107596956