环境介绍
Linux 版本信息,通过 uname -a
查看: 16.04.1-Ubuntu
VS code 信息: VS Code (version 1.34.0)
后续的全部开发以及文章都是以这个环境上面为基础。
因为项目上的需求,需要用到 Flutter,顺便也借助这个机会,学习新知识~
学无止境!
Flutter 基础认知
跨平台开发。
使用 dart 的优势(与 JavaScript 对比):开发效率高,高性能,快速内存分配,类型安全。
框架
Framework(Dart),
-
底层(Foundation和Animation、Painting、Gestures)在 Google 的一些视频中被合并为一个 dart UI 层,对应的是 Flutter 中的 dart:ui 包,它是 Flutter 引擎暴露的底层 UI 库,提供动画、手势及绘制能力。
-
Rendering 层,这一层是一个抽象的布局层,它依赖于 dart UI 层,Rendering 层会构建一个 UI 树,当 UI 树有变化时,会计算出有变化的部分,然后更新 UI 树,最终将 UI 树绘制到屏幕上,这个过程类似于 React 中的虚拟 DOM。Rendering 层可以说是 Flutter UI 框架最核心的部分,它除了确定每个 UI 元素的位置、大小之外还要进行坐标变换、绘制(调用底层 dart:ui )。
-
Widgets 层是 Flutter 提供的的一套基础组件库,在基础组件库之上,Flutter 还提供了 Material 和 Cupertino 两种视觉风格的组件库。而我们 Flutter 开发的大多数场景,只是和这两层打交道。
Engine(C++)
这是一个纯 C++ 实现的 SDK,其中包括了 Skia 引擎、Dart 运行时、文字排版引擎等。在代码调用 dart:ui 库时,调用最终会走到 Engine 层,然后实现真正的绘制逻辑。