爱了!阿里大神最佳总结“Flutter进阶学习笔记”,理论与实战
前言
“小步快跑、快速迭代”的开发大环境下,“一套代码、多端运行”是很多开发团队的梦想,美团也一样。他们做了很多跨平台开发框架的尝试:React Native、Weex、PWA 等等。但都没有得到很好的解决,直至遇到Flutter。
Flutter 提供了一整套从底层渲染逻辑到上层开发语言的完整方案,有跨平台、高保真、高性能等优点。因此从发布开始,热度一路攀升,受到开发者们的热切青睐,也有了 阿里闲鱼、今日头条、腾讯 Now 等在内的一众知名商业案例。
我曾跟很多前端、Android、iOS 的开发者聊过,其中超过 80% 的人告诉我他正在或打算学 Flutter ,但他们中的大部分都遇到了这些问题:
1、Flutter 从语言到开发框架都是全新的,技术栈的积累必须从头开始,学起来很费力。
2、看了很多关于 Flutter 的教程,可它们都太重视应用层 API 各个参数的介绍或实现细节,感觉无从下手。
想学好 Flutter,不应该仅停留细节层面,更要深入它的原理、设计思路和通用理念。
分享一张我收藏的 Flutter 核心知识图谱,里面涵盖了开发、调试、测试、发布、线上运维及工程管理。只要你能掌握下面80%的知识点,绝对可以搞懂 Flutter。

Flutter 的优点
从出身来说,Flutter 是谷歌的,所以对于 Android 开发者来说,从开发环境上来说,上手要容易很多。
其次, Flutter 目前的更新与迭代非常频繁,在 3 月份发布了 Flutter的 2.0 版本,支持了Android、iOS、Windows、macOS、Linux 平台,甚至未来可以会被嵌入到一些智能设备:电视、智能家居甚至汽车。
回归到技术层面,大家都知道以前比较热门的跨端框架是 React Native,实现原理主要是利用 js 将页面上的控件转化为原生控件,这样就带来了很多问题,例如新控件的适配,以及不同平台控件的差异性没法磨平,一个页面Android、iOS展示效果有差异,UI 同学不会同意吧。
而 Flutter 彻底改变了之前「转化」的思路,采用了全新的 Widget,完全自己绘制,屏蔽掉平台的差异性。
最后,Flutter 整个社区的活跃度非常高,出问题有地方查,有大厂分享最佳实践,不香吗?
找工作的加分项
Flutter目前也是Android开发岗位的加分项,下面是我在Boss上面搜到的一部分招聘信息。
通过上图我们可以看出,很多大厂在高薪招聘这方面的人才,Flutter 确确实实可以成为我们找工作的一个帮助。
Android开发该如何快速上手Flutter?
我们可以利用 Flutter 官方网站的教程,搭建好环境,写出一些 Demo 示例,在此之后需要了解如何混合开发,“万物皆 Widget”到底怎么理解?对于 State 的理解等原理知识...
这些对我们Android开发来说都有一定的难度。
为了让大家快速无痛上手 Flutter,给大家分享一份阿里大神总结的《Flutter进阶学习笔记》。
整理大纲
为什么Flutter是跨平台开发的终极之选
在Windows上搭建Flutter开发环境
编写您的第一个 Flutter App
Flutter开发环境搭建和调试
Dart语法篇之基础语法(一)
Dart语法篇之集合的使用与源码解析(二)
Dart语法篇之集合操作符函数与源码分析(三)
Dart语法篇之函数的使用(四)
Dart语法篇之面向对象基础(五)
Dart语法篇之面向对象继承和Mixins(六)
Dart语法篇之类型系统与泛型(七)
Flutter中的widget
第一章 为什么Flutter是跨平台开发的终极之选
这是为什么?
跨平台开发
什么是 Flutter
Flutter 的特性
Flutter 构建应用的工具
使用 Flutter 构建的热门应用
构建 Flutter 应用的成本
……

第二章 在Windows上搭建Flutter开发环境
使用镜像
系统要求
获取Flutter SDK
编辑器设置
Android设置
起步: 配置编辑器
起步: 体验
体验热重载
创建新的应用
运行应用程序
……

第三章 编写您的第一个 Flutter App
第1步: 创建 Flutter app
第2步: 使用外部包(package)
第3步: 添加一个 有状态的部件(Stateful widget)
第4步: 创建一个无限滚动ListView
第5步: 添加交互
第6步: 导航到新页面
第7步:使用主题更改UI
……

第四章 Flutter开发环境搭建和调试
开发环境的搭建
模拟器的安装与调试
开发环境的搭建
模拟器的安装与调试
……

第五章 Dart语法篇之基础语法(一)
Hello Dart
数据类型
变量和常量
集合(List、Set、Map)
流程控制
运算符
异常
函数
……

第六章 Dart语法篇之集合的使用与源码解析(二)
List
Set
Map
Queue
LinkedList
HashMap
Map、HashMap、LinkedHashMap、SplayTreeMap区别
命名构造函数from和of的区别以及使用建议
……

第七章 Dart语法篇之集合操作符函数与源码分析(三)
Iterable
Iterable类关系图
Iterable类方法图
forEach
介绍
使用方式
源码解析
map
介绍
使用方式
源码解析
any
介绍
使用方式
源码解析
every
介绍
使用方式
源码解析
where
介绍
使用方式
源码解析
firstWhere和singleWhere和lastWhere
介绍
使用方式
源码解析
join
介绍
使用方式
源码解析
take
介绍
使用方式
源码解析
takeWhile
介绍
使用方式
源码解析
……

第八章 Dart语法篇之函数的使用(四)
函数参数
匿名函数(闭包,lambda)
箭头函数
局部函数
顶层函数和静态函数
main函数
……

第九章 Dart语法篇之面向对象基础(五)
属性访问器(accessor)函数setter和getter
面向对象中的变量
构造函数
抽象方法、抽象类和接口
类函数
……

第十章 Dart语法篇之面向对象继承和Mixins(六)
类的单继承
基于Mixins的多继承
……

第十一章 Dart语法篇之类型系统与泛型(七)
可选类型
接口类型
泛型
类型具体化
……

第十二章 Flutter中的widget
Flutter页面-基础Widget
Widget
StatelessWidget
Stateful Widget
State生命周期
基础widget
文本显示
……

由于篇幅有限,进截图展示部分内容,朋友们如果有需要完整版学习手册,可以到我的【Github】阅读下载.
特别认同一句话:只有拥抱变化,才能比别人更早发现机会。
没有谁甘愿薪资增长缓慢或一直被无情压榨,或早或晚我们都会走上进阶之路。与其被动接受,不如主动出击,先争取成为技术强+思维深+视野广的工程师,机会来临时才能从容不迫地顺应而上,比别人更快一步。
爱了!阿里大神最佳总结“Flutter进阶学习笔记”,理论与实战的更多相关文章
- 爱了,字节跳动大神最佳整理:582页Android NDK七大模块学习宝典,理论与实践
前言 时至今日,短视频App可谓是如日中天,一片兴兴向荣.随着短视频的兴起,音视频开发也越来越受到重视,而且薪资水涨船高,以一线城市为例,音视频工程开发的薪资比Android应用层开发高出40%. 但 ...
- 阿里大神favoorr提供的书单
Thoughtwoks中国的推荐书单 <http://www.douban.com/doulist/2012097/ >新浪微博-秦迪 <http://blog.2baxb.me/ ...
- 看看大神 Paul Graham 对如何学习编程的回答
前言 我翻阅自己之前写的博客文章,发现在 2015 年我刚开始学习编程的时候,翻译了一段 Paul Graham 关于"How can I learn to program?"的回 ...
- Python 最佳实践指南 2018 学习笔记
基础信息 版本 Python 2.7 Python 3.x Python2.7 版本在 2020 年后不再提供支持,建议新手使用 3.x 版本进行学习 实现 CPython:Python的标准实现: ...
- 《Hadoop大数据架构与实践》学习笔记
学习慕课网的视频:Hadoop大数据平台架构与实践--基础篇http://www.imooc.com/learn/391 一.第一章 #,Hadoop的两大核心: #,HDFS,分布式文件系统 ...
- GIS-"地理空间大数据与AI的碰撞"学习笔记
1.关系 人工智能>机器学习>神经网络>深度学习 2.机器学习-两个过程 训练/学习过程:样本数据.学习器.模型参数 测试/预测过程:预测.预测值 3.神经网络 机器学习模拟人脑神经 ...
- 大数据学习笔记——Hadoop编程实战之Mapreduce
Hadoop编程实战——Mapreduce基本功能实现 此篇博客承接上一篇总结的HDFS编程实战,将会详细地对mapreduce的各种数据分析功能进行一个整理,由于实际工作中并不会过多地涉及原理,因此 ...
- 大数据学习笔记——Hadoop编程实战之HDFS
HDFS基本API的应用(包含IDEA的基本设置) 在上一篇博客中,本人详细地整理了如何从0搭建一个HA模式下的分布式Hadoop平台,那么,在上一篇的基础上,我们终于可以进行编程实操了,同样,在编程 ...
- 阿里云server改动MySQL初始password---Linux学习笔记
主要方法就是改动 MySQL依照文件以下的my.cnf文件 首先是找到my.cnf文件. # find / -name "my.cnf" # cd /etc 接下来最好是先备份my ...
随机推荐
- 飞扬起舞,基于.Net Cli亲手打造.Net Core团队的项目脚手架
什么是脚手架? Scaffolding is a meta-programming method of building database-backed software applications. ...
- 12、Linux磁盘设备基础知识(2)
12.4.计算磁盘容量: 磁盘的大小=盘面大小*磁头数 盘面的大小=磁道大小*磁道数 磁道大小=512字节*扇区数 磁盘的大小=512字节*扇区数*磁道数*磁头数 磁盘的大小=柱面大小*柱面数 柱面大 ...
- Vue(13)子组件与父组件超详细解析
父组件和子组件 我们经常分不清什么是父组件,什么是子组件.现在来简单总结下:我们将某段代码封装成一个组件,而这个组件又在另一个组件中引入,而引入该封装的组件的文件叫做父组件,被引入的组件叫做子组件.具 ...
- JS replace 替换全部数据
(1)使用具有全局标志g的正则表达式 var str = "dogdogdog"; var str2 = str.replace(/dog/g,"cat");/ ...
- SonarQube 概述与安装
SonarQube 概述 是一种自动代码审查工具,用于检测代码中的错误.漏洞和代码异味.它可以与您现有的工作流程集成,以支持跨项目分支和拉取请求的持续代码检查. 在一个典型的开发过程中 开发人员在 I ...
- C#/VB.NET 设置PDF跨页表格重复显示表头行
在创建表格时,如果表格内容出现跨页显示的时候,默认情况下该表格的表头不会在下一页显示,在阅读体验上不是很好.下面分享一个方法如何在表格跨页时显示表格的表头内容,在C#中只需要简单使用方法grid.Re ...
- 不同版本docker修改存储位置补充
前言:最近发现yum安装docker,安装的版本不一样,有点蛇皮,虽然存放默认位置都是/var/lib/docker,但是它的配置文件不一样,这里做个补充 对于docker版本是1.13及以下 操作如 ...
- 『心善渊』Selenium3.0基础 — 28、unittest中测试套件的使用
目录 1.测试套件的作用 2.使用测试套件 (1)入门示例 (2)根据不同的条件加载测试用例(了解) (3)常用方式(推荐) 1.测试套件的作用 在我们实际工作,使用unittest框架会有两个问题: ...
- Linux_multipath
安装多路径软件 yum功能安装一下软件包 yum -y install device-mapper device-mapper-multipath 修改多路径软件运行等级为开机自启 chkconfig ...
- 「AGC021E」Ball Eat Chameleons
「AGC021E」Ball Eat Chameleons 考虑如何判定一个合法的颜色序列. 不妨设颜色序列中有 \(R\) 个红球,\(B\) 个蓝球,所以有 \(R+B=k\). 考虑分情况讨论: ...