首先让我们了解一下 Flutter 是什么?
根据谷歌官方的解释:
Flutter 是由谷歌开发的移动 UI 框架,能够迅速构建出高品质的原生用户界面,适用于 iOS 和 Android 平台。
一个代码可以同时生成高性能、高保真的iOS和Android应用程序。
-
Flutter 的目标是让开发人员能够交付在各个平台上都具有自然流畅的高性能应用程序,并且兼容滚动行为、排版、图标等方面的差异。
-
Flutter 使用的编程语言是 Dart,如果您熟悉 Java 或 JavaScript 等编程语言,那么上手 Flutter 将会非常容易。甚至有一些没有任何编程经验的人也能够写出一些简单的 Flutter 应用程序。
目前,越来越多的开发者和组织正在广泛采用Flutter,并且这个完全免费、开源的框架在当下已经成为了一种流行选择。
下面是一张 Flutter 框架结构图
通过观察图表,我们可以得出结论:Flutter的架构主要由三个层次组成,分别是Framework、Engine和Embedder。
Framwork
这一层采用纯 Dart 实现,结合了两种设计风格,即 Material Design 和 Cupertino (专为iOS设计) 风格。
- Widgets 层: 一套基础组件库
- Rendering 层: UI 布局渲染
- Animation、Painting、Gestures、Foundation 是 Dart: UI 库提供的对接底层动画,手势识别等功能
Engine
Engine 是使用 C++ 进行实现的,主要包括 Skia、Dart 和 Text
- Skia 是开源的二维图形库,提供了适用于多种软硬件平台的通用API; 其已作为Google Chrome,Chrome OS,Android, Mozilla Firefox, Firefox OS等其他众多产品的图形引擎,支持平台还包括Windows, macOS, iOS,Android,Ubuntu等
- Dart 部分主要包括:Dart Runtime,Garbage Collection(GC),如果是Debug模式的话,还包括JIT(Just In Time)支持; Release和Profile模式下,是AOT(Ahead Of Time)编译成了原生的arm代码,并不存在JIT部分
- Text 即文本渲染,其渲染层次如下: 衍生自 Minikin 的 libtxt 库(用于字体选择,分隔行);HartBuzz 用于字形选择和成型;Skia 作为渲染 GPU 后端,在 Android 和 Fuchsia 上使用 FreeType 渲染,在 iOS 上使用 CoreGraphics 来渲染字体
Embedder
Embedder是嵌入层,与各个系统平台相关联。它的主要功能是将Flutter嵌入到不同的平台上,实现引擎在平台之间的移植,并处理中间层代码、渲染设置、原生插件、打包、线程管理以及事件循环交互操作等任务。
Flutter的优势在哪里?
高效开发
通过毫秒级的热重载,您可以立即更新应用界面,无需等待。使用丰富且完全可定制的widget,在几分钟内就能构建出原生界面。
富有表现力和灵活的UI
我们能够快速发布聚焦于原生体验的功能,而且我们的分层架构允许您完全自定义,从而实现了令人难以置信的快速渲染和富有表现力、灵活的设计。
本地性能
Flutter 包含了许多核心的 widget,如滚动、导航、图标和字体等,这些都可以在 iOS 和 Android 上达到原生应用一样的性能
Flutter 要学吗?
谷歌将Flutter视为重新整理跨平台生态环境的决心体现。Flutter所展现的内容也是谷歌想要拓展和维护的方向。对于长期苦恼于跨平台选择的广大Android开发者而言,Flutter可以说是谷歌为我们提供的指路明灯。
或许,尽管部分库在Flutter系列中尚未成熟到能够成为你工作的首选,但是深入学习Flutter组件将为你提供与谷歌大佬深入交流的机会,并为你日常开发带来一些新的思路。
综合而言,总体来看,Flutter 对广大开发者来说是带来的利益远远超过可能存在的不利因素。
该如何去学习 Flutter?
关于Flutter的文档资料在网上虽然很多,但大多杂乱无章,无法提供一个良好的学习方向。为了让大家对Flutter有充分的了解,特别提供一份精心制作的Flutter开发工程师思维导图,并通过思维导图来帮助大家系统地学习和掌握Flutter技术。
Flutter 开发工程师思维导图
下面是通过该思维导图为依据,再对这些年的工作经历的融合和网上的资料查询整理,最终将其整合了成了一个 Flutter 学习笔记
以下是内容的展示:
Dart 语法基础
- Dart 语法详解
- 编译原理
- Dart 语言基础详解(变量、内置类型、函数、操作符、流程控制语句)
- Flutter(Dart)基础——类的详解
- Dart 初始化列表
- Dart 的构造方法及属性(setter/getter)
- Dart 构造方法
- Dart 的工厂构造方法
- Dart 之 Mixin 详解
Dart 语法进阶
- Exception 类型
- Error 类型
- 异常抛出
- 异常捕获
- 类
- 泛型
- 异步
获取完整版 Flutter 学习笔记的方式非常简单,只需通过私信发送关键词“笔记”,即可免费获得。
Flutter 3.0 之 UI
- 列表和网格视图 Widget
- 布局 Widget
- AbsListView 常用属性和相关方法
- 常用适配器介绍与使用
- ListView 详细介绍与使用
- GridView 详解与应用
- GridView 主要使用方法
- GridView 使用 Demo
- 布局 Widget
Flutter 3.0 线程
- Flutter 事件队列
- 应用场景
- 实现思路
- 具体实现
- async await 原理解析
- Future Dart 的消息循环机制
- 最常用的 async 和 await
- Promise 对象的基本用法
- Flutter 多线程
获取完整版 Flutter 学习笔记的方式非常简单,只需通过私信发送关键词“笔记”,即可免费获得。
Flutter 3.0 项目实战
- Flutter 底部导航路由实现
- 底部导航实现
- Widget 属性说明
- Page 存在重复创建的问题
- Flutter 创建侧滑菜单
- 个人中心制作
- 简单个人中心
- 商城会员中心
- Flutter 实战 APP 入门及主页
Flutter 启动流程
- Dart 虚拟机
- Dart 虚拟机与 JVM 虚拟区别
- Dart 虚拟机启动
- Dart isolate 机制
- Skia 引擎
- Skia 引擎重要类简介
- Skia 绘图概述 canvas
- Flutter Activity 启动流程
- Flutter 应用启动
获取完整版 Flutter 学习笔记的方式非常简单,只需通过私信发送关键词“笔记”,即可免费获得。
对于程序员而言,学习的知识和技术领域实在是广泛繁多。为了保持竞争力,我们必须不断提升自己的能力。毕竟,适应环境一直是我们的责任,而非期待环境来迎合我们。
技术是一个无穷无尽的领域,你需要对自己所编写的每一行代码、使用的每一个工具负起责任,不断深入探索其底层原理,以便将自己的技术提升到更高的境界。
最后,愿所有开发者能够迅速掌握 Flutter,并登上更为崇高的巅峰。
还木有评论哦,快来抢沙发吧~