上QQ阅读APP看书,第一时间看更新
1.2 Flutter的架构
本节将介绍Flutter的架构。如图1.3所示,Flutter采用了分层设计的模式,整体架构分为两层——框架(framework)层和引擎(engine)层。
图1.3 Flutter的架构
引擎层由C++ 编写,其中主要包含Dart虚拟机、Skia渲染引擎库和文字渲染基础组件Text。我们已经知道Flutter与其他跨平台框架的不同就在于它有独立的渲染引擎库,而不依赖原生引擎库,Skia便是这个渲染引擎库。Dart虚拟机包含了Dart中编译方式、垃圾回收等机制的实现。而引擎层中的Text则负责Flutter中文字的渲染。
框架层完全由Dart语言实现,是开发者直接接触的部分,包含了图片、按钮等基础组件(widget),以及动画、手势等内置组件。在应用开发中开发者最常与该层提供的接口与组件打交道。从整体来看,Flutter的框架层依然采用了分层架构,每一层又按照功能模块划分。框架层中部分层的作用如下。
- Foundation层是框架层的最底层,主要定义了框架层的各类基础API,提供了上一层会使用到的工具类和方法接口等。
- Animation层包含了Flutter中实现动画的相关类,第6章会介绍这部分内容。Painting层中封装了Flutter引擎层提供的绘图接口,包括绘制图像、文本、阴影的功能以及自定画布等,Gestures层提供了与手势识别相关的类,包括触摸、缩放以及拖曳等,第7章会详细介绍关于Painting层和Gestures层的内容。
- 而渲染层则依赖下面的Painting、Animation等层,通过调用下一层的接口可以为UI设计具体的布局,完成绘画和合成等操作。这一层也是Flutter能够将代码中的组件渲染在屏幕中的核心层,这会在本章之后的几节中介绍。
- 组件层中提供了非常丰富的组件供我们在开发中使用,包括了基本的Text、Image、Container、TextField等组件。我们通过在代码中组合、嵌套该层中提供的不同类型的各个组件可以构建出任意功能和任意复杂度的界面。这里的组件最终也会生成一个个渲染对象,在渲染层中做具体的渲染工作,这会在之后的章节中具体介绍。Flutter在该层的基础上也提供了Material和Cupertino两种分别对应Android与iOS视觉风格的组件库。第3章会详细介绍如何使用组件。
从这里,我们不难看出,我们在应用开发中最常接触的就是组件层,它也是我们开发整个视图的基础。官方文档提出的一个重要的理念就是“一切皆为组件”。在Flutter里,包括布局和动画等在内的大部分概念建立在组件的基础之上。本书旨在揭开Flutter神秘的面纱。