Flutter整体框架

Flutter整体框架由三部分组成:Framework、Engine和Embedder。

Framework

Framework提供了一个用 Dart 语言编写的现代、反应式框架,由许多抽象的层级组成。它包括一套丰富的布局、动画、绘制、手势UI组件及配套代码,以及更基础的异步、文件、ui等基础服务。

Framework最顶端是各种Widgets。包括我们经常用到的 Material 和 Cupertino两种风格的Widget以及下面的不带明确风格的Widgets。比如:UI/文本/图片/按钮等基础 Widgets。 在 Widget 层下面,你会发现 Rendering 层。

再往下是RenderObject。其会被上层的Flutter Widgets调用来实现其布局和后台的绘制。Rendering tree 中的所有 RenderObjects 都会被Flutter分层和绘制。不过,大多数情况下, 你会发现 Flutter中我们想要实现自定义的绘制逻辑,主要是使用CustomPaint或RenderObject的子类RenderBox ,而不是直接使用RenderObject。因为封装一个全新的RenderObject是相当麻烦的,我们必须去实现layout、绘制和命中测试逻辑。

dart:ui 是框架的最底层,它负责处理与 Engine 层的交流沟通,以及一些对Flutter开发的基础抽象。 此部分的核心代码是: flutter 仓库下的flutter package,以及 sky_engine 仓库下的 io, async, ui等package。

Engine

Engine大部分是用C++实现的,其提供了Flutter核心API的底层实现。包括 Dart 运行时、编译工具链,以及图形(通过Skia)、文本布局、文件和网络I/O、可访问性支持、插件架构等等,是连接框架和系统(Andoird/iOS)的桥梁。

Engine通过dart:ui暴露给Flutter框架,它将底层的C++代码封装在Dart类中。这个库暴露了最底层的基元,例如用于驱动输入、图形和文本渲染子系统的类。

Dart 部分主要包括:Dart Runtime,Garbage Collection(GC)以及Debug模式下的JIT支持。

Skia是开源的二维图形库,提供了适用于多种软硬件平台的通用API。

Text 即文本渲染,其使用Skia作为渲染后端,在Android和Fuchsia上使用FreeType渲染,在iOS上使用CoreGraphics来渲染字体。

Embedder

Embedder 负责与底层操作系统协调,以访问服务,如渲染表面、可访问性和输入,并管理线程及消息事件循环。

Embedder提供初始化 Flutter 引擎的入口,使Flutter 代码可以作为一个模块集成到现有的应用程序中,或者作为应用的主要模块。

Embedder会获取 UI 和栅格化线程,创建 Flutter 可以写入的纹理。

Embedder层同时负责管理应用的生命周期,包括输入的操作(例如鼠标、键盘和触控)、窗口大小的变化、线程管理和平台消息的传递等等。

相关推荐
程序员老刘9 小时前
跨平台开发地图:四月风暴前夕,你该怎么选?| 2026年4月
flutter·ai编程·客户端
MakeZero9 小时前
Flutter那些事-PageView
flutter
Lanren的编程日记12 小时前
Flutter鸿蒙应用开发:数据加密功能实现实战,全方位保护用户隐私数据
flutter·华为·harmonyos
梦想不只是梦与想12 小时前
flutter 与 Android iOS 通信?以及实现原理(一)
android·flutter·ios·methodchannel·eventchannel·basicmessage
2601_9495936514 小时前
Flutter OpenHarmony 三方库 path_provider 文件路径获取适配详解
flutter
哈撒Ki15 小时前
快速入门 Dart 语言
前端·flutter·dart
小蜜蜂嗡嗡15 小时前
flutter 自定义走马灯,内部为Widget控件的走马灯效果二:横向无限匀速滚动+每个Item与屏幕左侧对齐时,停靠3秒再继续滚动
开发语言·flutter
浮芷.15 小时前
生命科学数据视界防御:基于鸿蒙Flutter陀螺仪云台与三维体积光栅的视轴锁定架构
flutter·华为·架构·开源·harmonyos·鸿蒙
千码君201616 小时前
Flutter:在win10上第一次安装和尝试开发记录
flutter·gradle·android-studio·安卓模拟器
浮芷.16 小时前
微观搜打撤:基于鸿蒙flutter的内存快照算法的局内外状态隔离与高阶背包系统设计
算法·flutter·华为·开源·harmonyos·鸿蒙