前言

“小步快跑、快速迭代”的开发大环境下,“一套代码、多端运行”是很多开发团队的梦想,美团也一样。他们做了很多跨平台开发框架的尝试: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. eclipse语言怎么设置为中文

    2021-05-30 方法:1.查找语言包下载网址,并复制:2.打开eclipse,点击"help"-"Install New Software"-" ...

  2. FastApi持续更新

    ​ FastAPI 框架,高性能,易于学习,高效编码,生产可用 官方文档: https://fastapi.tiangolo.com FastAPI 是一个用于构建 API 的现代.快速(高性能)的 ...

  3. Docker与k8s的恩怨情仇(四)-云原生时代的闭源落幕

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 在本系列前几篇文章中,我们介绍了从Cloud Foundry到Docker等PaaS平台的发展迭代过程.今天 ...

  4. webpack(1)安装环境与解决环境问题

    前言 如果我们需要使用webpack,就需要依赖node环境 nvm node npm webpack@cli webpack nvm安装 nvm是一个用来管理node版本的工具.我们之所以需要使用n ...

  5. COURSES 赤裸裸的二分匹配大水题

    COURSES 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include ...

  6. ActiveMq 之JMS 看这一篇就够了

    什么是JMS MQ 全称:Java MessageService 中文:Java 消息服务. JMS 是 Java 的一套 API 标准,最初的目的是为了使应用程序能够访问现有的 MOM 系 统(MO ...

  7. Redis:Java链接redis单节点千万级别数据 写入,读取 性能测试

    本文是对Redis 单节点,针对不同的数据类型,做插入行测试. 数据总条数为:10058624 环境说明:             Redis 未做任何优化, 单节点    (服务器上, 内存64G) ...

  8. shell 调用其他shell脚本中的变量、函数

    在Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数呢? 方法一:   . ./subscript.sh  (两个点之间,有空格) 方法二:   source ./subscript. ...

  9. vsftpd配置 (转)

      # # The default compiled in settings are fairly paranoid. This sample file # loosens things up a b ...

  10. Could not connect to 'xxx.xx.xx.xxx' (port 22): Connection failed.

    刚刚使用xshell好好的,突然注销账号,准备重新连接突然连不上了. 这就很尴尬了,对我这种linux菜鸟只能去百度了,终于解决了,赶紧记录下这个坑 1.先登陆虚拟机,输入这段命令 查看ssh服务是否 ...