Flutter 学习路线图
老
孟
一枚
有态度
的程序员
Flutter 学习路线图
如果你真的觉得很难,坚持不了了,那就放弃,既然放弃了就不要抱怨没有得到。 选择你热爱的,坚持你选择的,不抱怨放弃的。
前言
Flutter越来越火,学习Flutter的人越来越多,对于刚接触Flutter的人来说最重要的是如何学习Flutter,重点学习Flutter的哪些内容。下面是Flutter的学习路线图,学会这些你就入门了,当然这仅仅是初学者的学习路线图,前路漫漫。
了解Flutter
这是一个非常虚的概念,也不必花费非常多的时间去专门了解,只需在搜索引擎上搜索大概浏览下相关内容即可,这可以让你对Flutter有一个全面的、站在顶层的了解,了解的内容如下:
- Flutter是什么、历史发展、有哪些优点。
- Flutter对比其他跨平台技术有哪些优势。
- Flutter整体框架。
- Flutter实现原理。
- Flutter响应式编程实现原理。
- Flutter与Dart的关系及Dart特点。
不要一看上面“原理”就感觉好高深,对于初学者要了解仅仅是思想,知道实现的思路,而不需要深入学习。
环境搭建
其实学习每一项技术首先都需要搭建环境,这并不属于学习路线的一部分,拿到这里单独说,也并不是告诉大家如何搭建环境,而是给大家推荐环境的选择,因为Flutter的开发并没有专门的IDE,可以使用vscode、android studio等,这里推荐使用android studio,系统建议Mac OS,因为Flutter目前主要用于Android和IOS的开发。
UI控件
UI控件的学习是进入Flutter的钥匙,因此第一个要学习的就是相关UI控件,Flutter系统提供的组件非常多(估计300+),难道要都要学习一遍吗?就算一天学3个控件,那也需要好几个月,这明显是不科学的,只需要学习常用的组件即可,哪些是常用组件?已经为大家整理好了常用组件及相关用法,地址:http://laomengit.com ,不仅有常用组件,还有整理了150多个组件的相关用法,不常用组件只需浏览一下,知道Flutter提供了类似的组件,用到的时候在来查阅。
Dart基础
Flutter是用Dart语言开发的,所以我们需要Dart语言的基础知识,如果你有其他高级语言的基础,这一部分基本可以略过,只需了解如下内容:
- 如何导入包。
- 异步编程(Future、async、await)。
- 注释。
- 命名规范
- 如何定义变量作用域(private、public)
因为这些方面和其他高级语言有些区别,至于其他的方法差别不大。
对于没有其他语言基础,甚至没有编程基础,这时候你需要找一本Dart基础的书学习其中的知识。
手势事件及事件传递机制
Flutter中有点击、长按、双击等各种手势事件,学习如何给控件绑定手势事件及事件的处理,最后需要对事件的传递机制有一定的了解。
动画
Flutter提供了大量的动画组件,但我们不仅仅是会使用这些组件,还要了解动画组件的实现原理,自定义动画组件。
网络请求
任何一个App基本都离不开请求网络,学会网络请求数据,强烈建议先了解下Dart自带网络请求,然后使用dio
第三方库获取网络请求。
本地数据存储
本地数据的存储有如下几种方式:
- 文件读取、写入。
- shared_preferences:通过key-value的方式存放数据,适合存储简单的数据,比如配置数据等。
- sqflite:数据库的形式存储数据,适合存储大量数据。
路由管理
什么是路由?简单的理解就是页面的跳转,从一个页面跳转到另一个页面。路由管理就是对这些页面跳转到管理。
国际化
如果你的App需要国际化,那么你需要学习国际化相关的内容,如何设置不同国家的文案等。当然这并不是必须的。
混合开发
混合开发是一个非常重要的内容,即使你完全使用Flutter开发一个全新的App,也可能涉及到原生开发。这部分你需要了解如下内容:
- 在原生项目中增加Flutter模块。
- Flutter与原生通信。
Flutter与原生通信更为重要,因为一些涉及硬件功能Flutter必须通过原生实现,比如相机、蓝牙等。
- Android打包遇到的那些坑
- 生信人写程序1. Perl语言模板及配置
- linux中压缩与解压缩命令小结
- java arrays类学习
- 如何使用带有Dropout的LSTM网络进行时间序列预测
- 生信人写程序2. Editplus添加Perl, Shell, R, markdown模板和语法高亮
- Rfam 12.0+本地使用 (最新版教程)
- 宝马汽车安全漏洞详解:古有伯乐识良驹,今有黑客擒宝马
- string.length()与-1比较为什么会出现匪夷所思的结果
- css模块化及CSS Modules使用详解
- 使用OpenCV,Python和模板匹配来播放“Waldo在哪里?”
- C++ 字符串分割
- 算法笔记之排序
- java中String类学习
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PyTorch Trick集锦
- client-go 之 Indexer 的理解
- 你的登录接口真的安全吗?
- Python,你真的会使用 staticmethod 和 classmethod 吗?
- GitLabCI/CD自动集成和部署到远程服务器
- istio-cni详解
- 【Pytorch 】笔记八:Tensorboard 可视化与 Hook 机制
- K近邻算法:以"同类相吸"解决分类问题!
- ROS与PCL中点云数据之间的转换
- 啊,http2还没搞明白,http3又来了?
- 掌握Linux文件权限,看这篇就够了
- 【shell脚本入门到精通】基本规范及良好的编写习惯
- shell脚本的函数介绍使用和常用案例
- 详解shell脚本case条件语句,开发各种服务启动脚本跳板机
- 详解自动交互命令expect,免去手动输入!