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官方文档