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 DesignCupertino提供了一系列的iOS-Style的控件。

图形管道

  1. GPU的Vsync信号同步到UI线程
  2. UI线程使用Dart来构建抽象的视图结构
  3. 视图结构在GPU线程中进行图层合成
  4. 合成后的视图数据提供给Skia图形引擎处理成GPU数据
  5. 数据再通过OpenGL或Vulkan提供给GPU进行渲染

Widget生命周期

State生命周期

转载自Google官方文档