Flutter - 架构
Flutter 架构图
分层架构
- 高性能渲染引擎(Engine 层)是最核心的部分。Flutter不使用浏览器技术,也不使用Native的原生控件,它使用自己的渲染引擎来绘制widget。
- 在Android平台,Flutter引擎的C/C++代码是由NDK编译
- 在iOS平台,则是由LLVM编译
- 两个平台的Dart代码都是AOT编译为本地代码
- Flutter应用程序使用本机指令集运行。
- Flutter正是是通过使用相同的渲染器、框架和一组widget,来同时构建iOS和Android应用,而无需维护两套独立的代码库。
Foundation
层由dart:ui
实现。dart:ui
提供了Framework
能够运行的最基础功能,比如绘图,界面刷新,触屏,鼠标等事件的原始信息等。Rendering
层由几个子模块组成:Animation
,Painting
,Gestures
. 在这一层,Flutter提供RenderObject
,实现完整的布局,绘制功能。Widgets
层是开发者最常接触到的一层。Widget
是对RenderObject
的封装。在Widget
层,Flutter实现了响应式开发框架。Material
,Cupertino
层: 在这一层,Flutter提供了一系列的Widget
,其中Material Widget
实现了Material Design
。Cupertino
提供了一系列的iOS-Style
的控件。
图形管道
- GPU的Vsync信号同步到UI线程
- UI线程使用Dart来构建抽象的视图结构
- 视图结构在GPU线程中进行图层合成
- 合成后的视图数据提供给Skia图形引擎处理成GPU数据
- 数据再通过OpenGL或Vulkan提供给GPU进行渲染
Widget生命周期
State生命周期
转载自Google官方文档