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

相关推荐
子春一3 小时前
Flutter for OpenHarmony:跨平台虚拟标尺实现指南 - 从屏幕测量原理到完整开发实践
flutter
renke33643 小时前
Flutter for OpenHarmony:形状拼图 - 基于路径匹配与空间推理的交互式几何认知系统
flutter
千逐683 小时前
多物理场耦合气象可视化引擎:基于 Flutter for OpenHarmony 的实时风-湿-压交互流体系统
flutter·microsoft·交互
ujainu3 小时前
保护你的秘密:Flutter + OpenHarmony 鸿蒙记事本添加笔记加密功能(五)
flutter·openharmony
特立独行的猫a3 小时前
主要跨端开发框架对比:Flutter、RN、KMP、Uniapp、Cordova,谁是未来主流?
flutter·uni-app·uniapp·rn·kmp·kuikly
一只大侠的侠3 小时前
Flutter开源鸿蒙跨平台训练营 Day17Calendar 日历组件开发全解
flutter·开源·harmonyos
晚霞的不甘3 小时前
Flutter for OpenHarmony 打造沉浸式呼吸引导应用:用动画疗愈身心
服务器·网络·flutter·架构·区块链
renke33644 小时前
Flutter for OpenHarmony:数字涟漪 - 基于扩散算法的逻辑解谜游戏设计与实现
算法·flutter·游戏
一只大侠的侠4 小时前
Flutter开源鸿蒙跨平台训练营 Day14React Native表单开发
flutter·开源·harmonyos
子春一4 小时前
Flutter for OpenHarmony:音律尺 - 基于Flutter的Web友好型节拍器开发与节奏可视化实现
前端·flutter