前言

“小步快跑、快速迭代”的开发大环境下,“一套代码、多端运行”是很多开发团队的梦想,美团也一样。他们做了很多跨平台开发框架的尝试: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进阶学习笔记”,理论与实战的更多相关文章

  1. 爱了,字节跳动大神最佳整理:582页Android NDK七大模块学习宝典,理论与实践

    前言 时至今日,短视频App可谓是如日中天,一片兴兴向荣.随着短视频的兴起,音视频开发也越来越受到重视,而且薪资水涨船高,以一线城市为例,音视频工程开发的薪资比Android应用层开发高出40%. 但 ...

  2. 阿里大神favoorr提供的书单

     Thoughtwoks中国的推荐书单 <http://www.douban.com/doulist/2012097/ >新浪微博-秦迪 <http://blog.2baxb.me/ ...

  3. 看看大神 Paul Graham 对如何学习编程的回答

    前言 我翻阅自己之前写的博客文章,发现在 2015 年我刚开始学习编程的时候,翻译了一段 Paul Graham 关于"How can I learn to program?"的回 ...

  4. Python 最佳实践指南 2018 学习笔记

    基础信息 版本 Python 2.7 Python 3.x Python2.7 版本在 2020 年后不再提供支持,建议新手使用 3.x 版本进行学习 实现 CPython:Python的标准实现: ...

  5. 《Hadoop大数据架构与实践》学习笔记

    学习慕课网的视频:Hadoop大数据平台架构与实践--基础篇http://www.imooc.com/learn/391 一.第一章 #,Hadoop的两大核心:     #,HDFS,分布式文件系统 ...

  6. GIS-"地理空间大数据与AI的碰撞"学习笔记

    1.关系 人工智能>机器学习>神经网络>深度学习 2.机器学习-两个过程 训练/学习过程:样本数据.学习器.模型参数 测试/预测过程:预测.预测值 3.神经网络 机器学习模拟人脑神经 ...

  7. 大数据学习笔记——Hadoop编程实战之Mapreduce

    Hadoop编程实战——Mapreduce基本功能实现 此篇博客承接上一篇总结的HDFS编程实战,将会详细地对mapreduce的各种数据分析功能进行一个整理,由于实际工作中并不会过多地涉及原理,因此 ...

  8. 大数据学习笔记——Hadoop编程实战之HDFS

    HDFS基本API的应用(包含IDEA的基本设置) 在上一篇博客中,本人详细地整理了如何从0搭建一个HA模式下的分布式Hadoop平台,那么,在上一篇的基础上,我们终于可以进行编程实操了,同样,在编程 ...

  9. 阿里云server改动MySQL初始password---Linux学习笔记

    主要方法就是改动 MySQL依照文件以下的my.cnf文件 首先是找到my.cnf文件. # find / -name "my.cnf" # cd /etc 接下来最好是先备份my ...

随机推荐

  1. centos使用yum安装docker

    1.先决条件 要安装 Docker 引擎,您需要 CentOS 7 或 8 的维护版本.不支持或测试存档版本. 该centos-extras库必须启用.默认情况下启用此存储库,但如果您已禁用它,则需要 ...

  2. 流程自动化RPA,Power Automate Desktop系列 - 批量备份Git仓库做好灾备

    一.背景 打个比如,你在Github上的代码库需要批量的定时备案到本地的Gitlab上,以便Github不能访问时,可以继续编写,这时候我们可以基于Power Automate Desktop来实现一 ...

  3. 流程自动化RPA,Power Automate Desktop系列 - 发布文档中心

    一.背景 内网中有一个基于VuePress搭建的静态文档中心,但是每次修改后都需要重新Build一次才行,之前都是手动执行命令,现在可以基于Power Automate Desktop来创建任务了. ...

  4. 基于 Electron 实现 uTools 的超级面板

    前言 为了进一步提高开发工作效率,最近我们基于 electron 开发了一款媲美 uTools 的开源工具箱 rubick.该工具箱不仅仅开源,最重要的是可以使用 uTools 生态内所有开源插件!这 ...

  5. Linux云计算-04_Linux用户及权限管理

    Linux是一个多用户的操作系统,引入用户,可以更加方便管理Linux服务器,系统默认需要以一个用户的身份登录,而且在系统上启动进程也需要以一个用户身份器运行,用户可以限制某些进程对特定资源的权限控制 ...

  6. POJ 2947 2947 Widget Factory 高斯消元

    给出组件的数量n,给出记录的数量m(n就是变元数量,m是方程数量).每一个记录代表一个方程,求每个组件的生产天数. 高斯消元即可 #include <cstdio> #include &l ...

  7. webpack(8)vue组件化开发的演变过程

    前言 真实项目开发过程中,我们都是使用组件化的去开发vue的项目,但是组件化的思想又是如何来的呢?下面就从开始讲解演变过程 演变过程1.0 一般情况下vue都是单页面开发,所以项目中只会有一个inde ...

  8. 码云使用svn无法提交空文件夹

    错误信息: svn: E200015: Commit failed (details follow): svn: E200015: Empty directories is not supported ...

  9. [心得笔记]Java多线程中的内存模型

    一:现代计算机的高速缓存 在计算机组成原理中讲到,现代计算机为了匹配 计算机存储设备的读写速度 与  处理器运算速度,在CPU和内存设备之间加入了一个名为Cache的高速缓存设备来作为缓冲:将运算需要 ...

  10. wireshark 调试 https/http2和grpc流量

    本文浏览器以 Chrom 为例 平常需要抓包的场景比较少,记录一下防止下次忘记配置 1. 解析 TLS 在本地创建用于保存 ssl logfile 的文件(文件可以存放到任意位置), 并添加到环境变量 ...