Android 程序员入坑 Flutter

一、前言

闲来无事,花了两个多星期入了Flutter的坑,这篇文章总结了一下这段时间学到的东西以及学习过程中看过的资料,也是想借此机会,看看自己有哪些遗漏的地方,感谢网上的各位大神。

之后也会根据总结好的知识体系,写一些自己的文章。

二、准备工作

2.1 Dart 语言

学习下来,Dart语言很多地方和Java都很类似,对于Android程序员来说没有什么难度。我学习的时候主要关注的几点:

  • 变量定义
  • 函数定义(可选参数是最常用的点)。
  • 类(构造函数定义的一些变种)
  • 一些Java中没有遇到的操作符,例如?.expr1 ?? expr2b ??=1
  • ListMap等数据结构的定义方式。
  • 单例的实现方式。
  • mixin的概念。
  • Dart语言中的语法糖

推荐文章

2.2 找一篇完整的教程

找到一篇完整的教程,从头到尾的跟着学习一遍,不要看独立的博客,有助于对整个Flutter涉及的方面有一个整体的认识

在学习完之后,再去针对有疑问的点去针对性地学习。我是跟着下面这篇教程学下来的,受益匪浅,感谢!

推荐文章

三、知识点拆解

经过了上面两步准备工作,就开始对知识点进行拆解,找一个笔记软件,按照拆解的分类,无论是别人写的,还是自己总结的,都要形成“知识组块”填入到脑海中,才不容易遗忘。

3.1 Widget

Widget的学习为两个方面:

  • 第一步:控件使用方式的学习,大家可以找一些在项目中做过的比较复杂的界面,试着用 Flutter的方式写一遍,flutter-go 展示了经常会用到的控件,用到控件的时候去看它是怎么实现的。
  • 第二步:除了会用之外,还要去了解一些Widget相关的概念,这里面比较核心的有:
    • StatelessWidget vs StatefullWidget
    • StatefullWidgetState的生命周期
    • BoxConstraints
    • BuildContext
    • WidgetElementRenderObject三者的关系

推荐文章

3.2 资源处理 & 屏幕适配

  • 如何声明并使用Flutter APK中的文件、图片、字体,以及图片放在不同文件夹下加载后所占的宽高。
  • 屏幕适配。

参考资料

3.3 动画

动画的话简单的看 Flutter 实战 中这部分的代码就行了,主要了解动画组成,掌握:

  • 单个、组合动画。
  • 页面跳转动画。
  • 共享元素动画。

推荐文章

3.4 自定义组件

自定义组件有以下三种方式:

  • 组合现有的Widget:这种方式比较简单,组合即可,用于封装项目中一些通用的布局。
  • 自定义Widget:通过CustomPaintCustomPainter,类似于在Android当中重写View.draw(Canvas canvas),使用CanvasPaintAPI在画布上绘制,当项目中一些图形比较复杂的时候会用到它。
  • 自定义布局:自定义RenderBoxMultiChildRenderObjectWidget的子类,用于子Widget的排列规则比较复杂的情况,例如Flow/Wrap这样的流式布局。

推荐文章

3.5 手势处理

  • Listener:难点在于HitTestBehavior的场景。
  • IgnorePointerAbsorbPointer:忽略PointEvent
  • GestureDector的回调方法。
  • GestureRecognizer的使用
  • 手势的竞争和冲突
  • 手势事件流的源码分析

推荐文章

3.6 异步操作

Android里面,异步操作的工具五花八门,AsyncTaskHandlerThread,但是在Flutter里面,一个async/await就解决问题了,主要掌握下面几点:

  • Flutter的事件模型,isolate的概念。
  • Future的概念。
  • async/await的使用方式,以及他们在事件循环中运行的时间点。
  • isolate之间如何通信。
  • RxDart的用法,这个和RxJava很类似,如果之前学过的应该很容易能够掌握。

推荐文章

3.7 路由

掌握页面间跳转和传递参数的方式。

推荐文章

Flutter 实战之路由管理

3.8 数据操作

数据操作分为以下几类,都有开源的包可以使用,查看说明文档即可。

3.9 Flutter 与 Native 的通信

  • FlutterNative之间如何进行数据和方法的传递。
  • 如何在Flutter中嵌入Android View

参考文章

3.10 状态管理

mclzone 写的一系列关于状态管理的文章很棒!看完之后就明白了,没有再看过其它的文章。

推荐文章

3.11 国际化

国际化的掌握分为三步:

推荐文章

3.12 进阶

(1) 编译 & 打包原理

(2) 初始化流程

(3) 绘制框架分析

ad6623 - 掘金 写的下面这系列关于渲染流水线的文章很棒,我每篇都边看边画流程图跟着学了下来,虽然很痛苦,但是收货很大,感谢!

(4) 绘制框架的一些补充文章

(5) Dart

3.13 看一下实际的 App 是如何实现的

3.14 性能优化

刚入门,还没到性能优化的地步,还需继续努力。= =

3.15 打包 & 发布

四、小结

当然,这只是一篇入门的教程,离工程化的标准还很远,这种只能到项目中实践了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,688评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,559评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,749评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,581评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,741评论 3 271
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,684评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,122评论 2 292
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,847评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,441评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,939评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,333评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,783评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,275评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,830评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,444评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,553评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,618评论 2 249

推荐阅读更多精彩内容