首先我们来了解下什么是 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 开发工程师思维导图
下面是通过该思维导图为依据,再对这些年的工作经历的融合和网上的资料查询整理,最终将其整合了成了一个 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 ,攀登上更高的高峰