声明:本人Flutter学习都是基于Flutter官网和Flutter中文网,所以会引入其中的一些资源和代码。
《Flutter实战》
Flutter
Flutter是Google退出并开源的便携式UI开发SDK,致力于用统一的代码库为移应用(Android & iOS),Web和桌面应用程序。
Flutter使用Skia作为其2D渲染引擎,跨平台的渲染引擎,使得Flutter可以在不同的平台中渲染出相同的表现。不过当前iOS系统使用的是Metal渲染引擎,所以我们在iOS应用打包中还要将Skia一并打包进去。
Flutter开发使用的Dart语言。Dart的优势在于其同时支持JIT(Just in time)和AOT(Ahead of time)两种运行方式,它允许开发者使用JIT模式(动态解释)进行开发,即时翻译查看代码变动后的效果,使用AOT模式(提前编译)发布应用包。这样做既提高了开发效率,又不影响应用的性能。
Flutter架构
下面是《Flutter实战》中的架构图:
从下往上:
- Foundation层和(Animation, Painting, Gestures)层对应的是Flutter中的dart:ui包,提供了UI的基础能力,包括动画、手势及绘制能力。
- Rendering层,类似于虚拟DOM的概念,负责构建UI树,进行布局计算和绘制和响应更新。
- Widgets层是基础的UI组件
- Meterial和Cupertino是两种不同UI样式的组件库。
Flutter Engine
Flutter Engine是C++实现的 SDK,其中包括了 Skia引擎、Dart运行时、文字排版引擎等。在代码调用 dart:ui库时,调用最终会走到Engine层,然后实现真正的绘制逻辑。
了解这些基本知识后,下一步就是搭建开发环境了。Flutter官网安装文档对不同系统搭建Flutter开发环境做了详细说明,请参考官网进行搭建。