首先我们来了解下什么是 Flutter ?
Flutter是谷歌推出的移动UI框架,可帮助开发者快速构建高质量的iOS和Android原生用户界面。
==通过使用Flutter,开发者只需编写一份代码即可生成两个平台的高性能、高保真应用程序。==
-
Flutter的目标 是使开发人员能够提供在不同平台上感觉自然流畅的高性能应用程序,并兼容滚动行为、排版、图标等方面的差异。
-
Flutter的开发语言是Dart 对于使用过Java或JavaScript等语言的开发者来说,可以很快上手,甚至一些没有编程经验的人也可以使用Flutter构建应用程序。目前,越来越多的开发者和组织开始使用Flutter,并且Flutter是完全免费、开源的。
Flutter的架构主要分为三层:Framework、Engine和Embedder。
- Framework层
采用纯Dart实现,并使用了两种设计风格——Material Design和Cupertino(针对iOS)。
- Widgets层
提供了一套基础组件库,而Rendering层则负责UI布局渲染、动画、手势识别等功能。
- Engine层
是用C++实现的,主要包括Skia、Dart和Text。Skia是一个开源的二维图形库,提供了适用于多种软硬件平台的通用API,被广泛应用于Google Chrome、Chrome OS、Android、Mozilla Firefox、Firefox OS等产品中。Dart部分主要包括Dart Runtime、垃圾回收机制等。
在Debug模式下还包括JIT支持,而在Release和Profile模式下则是AOT(Ahead Of Time)编译成原生的arm代码。
Text主要负责文本渲染,其渲染流程衍生自Minikin的libtxt库(用于字体选择和分隔行),通过HartBuzz进行字形选择和成型,最后由Skia作为渲染GPU后端完成渲染任务。在Android和Fuchsia上使用FreeType渲染,而在iOS上则使用CoreGraphics来渲染字体。
Embedder是与各个系统平台相关联的层次,负责将Flutter嵌入到各个平台中,包括引擎移植到平台的中间层代码、渲染设置、原生插件、打包、线程管理、事件循环交互操作等。
- Flutter具有诸多优势
例如开发效率高、富有表现力和灵活的UI、原生性能等。
对于广大开发者而言,Flutter是谷歌重新整理跨平台生态环境决心的体现。对于长期在跨平台选择上感到困惑的Android开发者来说,Flutter就像是指路明灯。
虽然Flutter系列库可能还未完全成熟到成为工作的首选,但深入学习Flutter组件仍然为开发者提供了与谷歌专家深入交流的机会,并为日常开发带来新的思考和想法。
总的来说,Flutter对广大开发者而言利大于弊。
==该如何去学习 Flutter?==
关于 Flutter 的文档 在网上其实有很多,但大多 杂而不精,并不能给提供一个 好的学习方向; 所以为了让大家对 Flutter 有充分的了解,这里特意联合了阿里P7架构师和谷歌技术团队共同整理了一份Flutter全家桶学习指南。
由于文章内容比较多,篇幅有限,已经被整理成了PDF文档,有需要 Flutter技术解析与实战 完整文档的
关注公众号:Android老皮
解锁 《Android十大板块文档》 ,让学习更贴近未来实战。已形成PDF版
目录
第一章 为什么 Flutter 是跨平台开发 的终极之选
- 01 这是为什么?
- 02 跨平台开发
- 03 什么是 Flutter
- 04 Flutter 的特性
第二章 在 Windows 上搭建 Flutter 开发环境
- 01 使用镜像
- 02 系统要求
- 03 获取 Flutter SDK
- 04 编辑器设置
- 05Android 设置
第三章 编写您的第一个 Flutter App
第四章 Flutter 开发环境搭建和调试
- 1.开发环境的搭建
- 2.模拟器的安装与调试
- 3.开发环境的搭建
- 4.模拟器的安装与调试
第五章 Dart 语法篇之基础语法(一)
一、Hello Dart 二、数据类型 三、变量和常量 四、集合(List、Set、Map) 五、流程控制 六、运算符 七、异常 八、函数
第六章 Dart 语法篇之集合的使用与源码 解析(二)
一、List 二、Set 三、Map 四、Queue 五、LinkedList 六、HashMap 七、Map、HashMap、LinkedHashMap、SplayTreeMap 区别
八、命名构造函数 from 和 of 的区别以及使用建议
第七章 Dart 语法篇之集合操作符函数与 源码分析(三)
- List item