Android 程序员入坑 Flutter
一、前言
闲来无事,花了两个多星期入了Flutter
的坑,总结了一下这段时间学到的东西以及学习过程中看过的资料,也是想看看自己有哪些遗漏的地方,感谢网上的各位大神。
框架搭好了,之后也会根据总结好的知识体系,写一些自己的文章。
二、准备工作
2.1 Dart 语言
学习下来,Dart
语言很多地方和Java
都很类似,对于Android
程序员来说没有什么难度。我学习的时候主要关注的几点:
- 变量定义
- 函数定义(可选参数是最常用的点)。
- 类(构造函数定义的一些变种)
- 一些
Java
中没有遇到的操作符,例如?.
,expr1 ?? expr2
,b ??=1
。 -
List
,Map
等数据结构的定义方式。 - 单例的实现方式。
推荐文章
2.2 找一篇完整的教程
找到一篇完整的教程,从头到尾的跟着学习一遍,不要看独立的博客,有助于对整个Flutter
涉及的方面有一个整体的认识。
在学习完之后,再去针对有疑问的点去针对性地学习。我是跟着下面这篇教程学下来的,受益匪浅,感谢!
推荐文章
三、知识点拆解
经过了上面两步准备工作,就开始对知识点进行拆解,找一个笔记软件,按照拆解的分类,无论是别人写的,还是自己总结的,都要形成“知识组块”填入到脑海中,才不容易遗忘。
3.1 Widget
Widget
的学习是单独的体力活,这里分为两步:
- 第一步:了解一些
Android
中没有的概念-
StatelessWidget
和StatefullWidget
的对比。 -
BoxConstraints
的概念。
-
- 第二步:采用类比的思维,在
Android
中,我们有ViewGroup/View
,在Flutter
中也一样,将控件分为MultiChild/SingleChild
的方式针对性地学习,这里不建议花太多的时间,大家可以找一些在项目中做过的比较复杂的界面,试着用Flutter
的方式写一遍,找找感觉就好。
大家可以把下面阿里巴巴提供的应用下载下来,用到控件的时候去看它是怎么实现的。
推荐文章
- flutter-go
-
Introducing Widget of the Week!,这个是
Flutter
官方的,很简短。
3.2 资源导入
- 资源导入,分辨率的适配。
- 第三方插件导入
推荐文章
- Flutter 实战 中对应章节。
3.3 动画
动画的话简单的看 Flutter 实战 中这部分的代码就行了,主要了解动画组成,掌握:
- 单个、组合动画。
- 页面跳转动画。
- 共享元素动画。
推荐文章
3.4 自定义组件
这部分和Android
的很类似,如果之前有自定义组件的经验,那么肯定不成问题。
3.5 手势处理
手势处理目前只是简单地了解了系统提供的API
等,实现自定义的手势监听还等待研究。
3.6 异步操作
在Android
里面,异步操作的工具五花八门,AsyncTask
、HandlerThread
,但是在Flutter
里面,一个async/await
就解决问题了,主要掌握下面几点:
-
Flutter
的事件模型,isolate
的概念。 -
Future
的概念。 -
async/await
的使用方式,以及他们在事件循环中运行的时间点。 -
isolate
之间如何通信。 -
RxDart
的用法,这个和RxJava
很类似,如果之前学过的应该很容易能够掌握。
推荐文章
3.7 路由
掌握页面间跳转和传递参数的方式。
推荐文章
3.8 数据操作
数据操作分为以下几类,都有开源的包可以使用,查看说明文档即可。
-
SharePreference
,shared_preferences - 文件,path_provider
- 数据库,sqflite
- 网络请求,dio
- 在网络请求的时候,还会遇到将
JSON
转换成实体类的问题, json_serializable。
3.9 Flutter 与 Native 的通信
-
Flutter
和Native
之间如何进行数据和方法的传递。 - 如何在
Flutter
中嵌入Android View
。
参考文章
- Flutter Platform channel 详解
- Flutter 实例 - 从本地到 Flutter 通信 - Event Channels
- 深入理解 Flutter Platform Channel
3.10 状态管理
mclzone 写的一系列关于状态管理的文章很棒!看完之后就明白了,没有再看过其它的文章。
推荐文章
- Flutter | 状态管理探索篇 —— Scoped Model (一)
- Flutter | 状态管理探索篇 —— Redux (二)
- Flutter | 状态管理探索篇 —— BLoC (三)
- Flutter | 状态管理拓展篇 —— RxDart (四)
- Flutter | 状态管理指南篇 —— Provider
3.11 国际化
国际化的掌握分为三步:
- 跟着 实用的 Flutter 国际化指南 中的标准方式做一遍。
- 用 flutter_i18n 实现一遍,会发现其实现原理同上,只是将转换部分的逻辑自动生成了。
- 看一下 flutter_gank ,了解如何在项目中实现。
推荐文章
3.12 进阶
(1) 编译 & 打包原理
(2) 初始化流程
(3) 绘制框架分析
ad6623 - 掘金 写的下面这系列关于渲染流水线的文章很棒,我每篇都边看边画流程图跟着学了下来,虽然很痛苦,但是收货很大,感谢!
(4) 绘制框架的一些补充文章
- Flutter 实现原理及在马蜂窝的跨平台开发实践
- Joey的Flutter之旅 - (3) 布局构建、渲染、绘制机制浅析
- Flutter 视图的 Layout 与 Paint
- Flutter's Rendering Pipeline
(5) Dart
3.13 看一下实际的 App 是如何实现的
3.14 性能优化
刚入门,还没到性能优化的地步,还需继续努力。= =
3.15 打包 & 发布
四、小结
当然,这只是一篇入门的教程,离工程化的标准还很远,这种只能到项目中实践了。