使用Flutter开发Github客户端及学习历程的小结
本文已授权「玉刚说」微信公众号独家原创发布
本文笔者将尝试分享个人针对Flutter
的 学习 并 搭建一个Flutter应用 的过程。
在这一个月学习Flutter
的过程中,我不可避免的走了很多弯路,也许这并非坏事,但是还是希望将这些经历表述出来,有两个目的:
- 1.为自己做一个周期性的总结;
- 2.也希望能给想学习
Flutter
的读者一定实质性的参考。
关于笔者总结的
Flutter
入门学习计划,可直接跳转文末的 Flutter入门学习计划 小节进行查看。
契机
上个月25号,任玉刚老师联系我,问我有没有兴趣翻译一篇Flutter
的技术博客。
当时我还没有接触Flutter
,觉得这是一个督促自己学习的机会,就尝试接下了这个任务。截止今天为止(6月25日)刚好一个月,在第一周保证翻译任务 完成 之后,三周之后的今天,我基本实现了自己的另外一个目标——搭建一个 Github客户端。
这个项目运行之后,App整体效果是这样的:
我将代码托管在了自己的Github
上:
FlutterGitHubApp: Flutter开发的跨平台Github客户端.
因为这是一个入门的项目,所以接下来也会从各方面深入学习Flutter
,并反过来继续完善和优化它。
第一周:初识Flutter
最初学习Flutter
的方式是通过学习 wendux 老师的 《Flutter实战》。
这是一本非常优秀的中文Flutter
教程,对个人学习Flutter
入门有非常大的帮助。
我根据这本小册中的内容完成了第一个 计数器 的入门案例,并对最常用的一些控件进行了熟悉和了解:
正如读者所见,我跟着《Flutter实战》 写了若干的demo代码,遗憾的是,效果并没有想象的那么好,原因也很明显,那就是我还没有完全熟悉Dart
的语法。
磨刀不误砍柴工
学习Flutter
的最开始,语法并非是最大的阻碍因素,因为对于熟悉Java
语法的我们来说,Dart
有很多相似之处,但随着Flutter
学习的不断深入,有时一些Dart
独有的语法特性会给我带来困惑,比如 级联操作符 、 var和dynamic关键字的区别 等等。
正如标题所言,我发现我走入了一个误区,Dart
语法的学习势在必行。
我学习语法的方式是通过翻阅Dart
中文网:
Dart中文社区:http://dart.goodev.org/
第一周的感受
因为是空闲时间学习,因此严格来说学习时间并没有那么多,最初的第一周,笔者花了几个晚上,每天9点下班之后学2~3个小时,熟悉了Dart
基本的语法和Flutter
的最常用的基础组件。
严格来说,此时个人依然处于小白水平,勉强摸到了入门的门槛。
私下里也会偷偷吐槽一下Dart
和Flutter
,布局写着写着下面连续十数行的 ),),),);),),},),},);),),),;),},);
真的令人不寒而栗......
第二周:状态管理
因为当初接翻译任务时,自己给自己设定了10天的期限(也是为了督促自己学习),因此第二周我需要在前3天内翻译完这篇博客:
- Widget-Async-Bloc-Service: A Practical Architecture for Flutter Apps
坦白来说,第二周的开始,这篇文章我看不懂,因此我需要学习Flutter
开发过程中的架构思想。
正所谓窥一斑而知全豹,虽然还没有真正着手Flutter
项目的开发,但是通过学习Flutter
的核心——状态管理,以及将 业务逻辑 和 UI的渲染 分开学习,再加上作为一个Android
开发者,理解这些概念本身就有很大的优势,学习效率自然非常的高。
学习Flutter
中状态管理的资料,我强烈推荐 Vadaski 的系列文章。
- Flutter | 状态管理探索篇——Scoped Model(一)
- Flutter | 状态管理探索篇——Redux(二)
- Flutter | 状态管理探索篇——BLoC(三)
- Flutter | 状态管理拓展篇——RxDart(四)
- Flutter | 状态管理指南篇——Provider
冒昧推荐这几篇关于状态管理的文章,实际上 Vadaski 老师关于Flutter
还有很多优秀的博客,这里不一一列举了,有兴趣的朋友可以去拜读一下。
如果读者之前学习或者了解过Redux
和ReactiveX
相关的思想,状态管理并不是非常难理解的概念。
熟悉了一系列Flutter
状态管理的实现方式之后,翻译文章时就顺畅很多了,幸不辱命,最终在第十天的凌晨将文章翻译完毕:
- Flutter 移动端架构实践:Widget-Async-Bloc-Service
完成之后,因为工作和私人的原因,第二周接下来几天就没有什么时间学习Flutter
了。
第二周小结
第二周的学习成果实际上和第一周差不多,因为前三天全神贯注,同时每天晚上多学了一会,再加上吃了之前的老本(之前对于Redux
的状态管理和RxJava
有一定的储备),学习效率还是比较高的。
这周的感觉就是,虽然自己没怎么上手项目,但是看了一些文章,对Flutter
有了一些初步的认识,总结如下:
- 1.因为
Flutter
本身采用的是React
的思路,和我们认知的 过程式开发 是不一样的, 状态管理 和 响应式编程 是非常重要的概念,如果之前有相关的知识储备,这个关键的知识点基本不会有什么难度,只需要关注API
的使用就好了;当然,没了解过也没关系,本小节上方的几篇关于状态管理优秀的博客,也能够帮助开发者非常快的进入Flutter
的节奏中去。 - 2.类比是一个非常好的学习方式,对于
Flutter
中的一些概念或者库而言:
2.1
RxDart
和Stream
相关的API
和RxJava
很相似;
2.2Future
相关的API可以参考Kotlin
的协程,通过同步的方式编写异步的代码;
2.3Provider
其实也就是另一种方式的依赖注入.
2.4Redux
就是参考前端的Redux
引进的,没有什么变化......
第三周:学习Widget
从结果来看,第三周我走了不少弯路。
第三周的最初,我认为我需要开始深入学习Flutter
中的Widget
,因此我选择fork
了著名的 flutter-go, 并且开始尝试跟着这个项目敲代码。
在敲了几天之后,我发现一个严重的问题,那就是这个学习过程中非常枯燥无聊,知识点之间没有关联性,感觉自己学了一个新的Widget
,就忘了上一个Widget
,没坚持多久,我就hold
不住了......
这也难怪,这个项目本身的目的就是 常用组件的demo演示与中文文档
, 我一个Widget
一个Widget
的用法跟着敲,这给了我一种 学习碎片没有组织起来 的感觉,说白了就是不成系统,效果并不明显。
因此我将 flutter-go 这个项目的定位变成了 工具书 ,接下来的学习过程中,每当我对一个Widget
的使用有了疑问,就随手打开这个APP进行查阅这个Widget
的用法,效果还不错。
第四周:在实战中学习
第四周我选择了实战开发,了解我的朋友应该知道,我曾经通过不同的开发模式(MVVM
和MVI
)开发过两次Github
的客户端,这次我也不例外。
选择以Github
客户端作为实战的练手项目还有一个原因,那就是 恋猫de小郭 老师已经开源了一个更强大的Github
客户端可以作为参考:
GSYGithubAppFlutter: 超完整的Flutter项目
同时,恋猫de小郭 老师也有非常优秀的Flutter
系列博客,因为该系列文章太多了,就不一一列出了,强烈建议收藏阅读。
所谓前人栽树后人乘凉,GSYGithubAppFlutter 确实在我实践过程中提供了很大的帮助,同时,因为第四周工作阶段性告一段落,我有更多时间去学习Flutter
,因此很快就把一个简单的Github
客户端敲了出来:
github.com/qingmei2/Fl…
阶段性总结
在一个月的学习过程中,我学习到了很多东西,也感觉很多地方需要慢慢改进,也感觉到有很多知识点需要去补。
但是令我振奋的一点是,我成功从舒适区跳了出来,并且度过了学习新知识过程中最痛苦的一段时间(畏难情绪+新领域的陌生感);
现在面对诸如 Kotlin
和Flutter
我学哪个比较好? 的问题,我也可以这样回答了:
小孩子才做选择,成年人当然是全都要啦!
最后,衷心感谢文中提到的各位老师对个人的帮助,其实在学习过程中,我还参考了更多Flutter
先驱者们优秀的博客和代码,实在难以一一列举,在此深表感谢。
Flutter入门学习计划?
如何入门Flutter
? 以个人经验来看,入门学习Flutter
可以参考下面步骤:
- 1.通过《Flutter实战》电子书完成一个简单的计时器示例;
- 2.通过 Dart中文社区 学习语法;
- 3.继续学习《Flutter实战》,了解
Flutter
基本概念; - 4.下载
flutter-go
,将App
下载到手机中作为工具书随时随地查阅; - 5.1.学习一些优秀的
Flutter
博客系列,比如上文中 Vadaski 和 恋猫de小郭 两位老师的文章; - 5.2 同时,下载优秀的
Flutter
开源项目学习源码; - 选择一个感兴趣的项目或者方向进行实战练习。
这个学习计划 一定是有改进空间 的,也诚挚的希望您能在评论区留下宝贵的想法和建议,这也能够为读者提供更多参考性的建议,感谢!
关于我
Hello,我是却把清梅嗅,如果您觉得文章对您有价值,欢迎 ❤️,也欢迎关注我的博客或者Github。
如果您觉得文章还差了那么点东西,也请通过关注督促我写出更好的文章——万一哪天我进步了呢?
- 我的Android学习体系
- 关于文章纠错
- 关于知识付费
作者:却把清梅嗅
链接:https://juejin.im/post/5d14f3645188255c117c0fd6
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
使用Flutter开发Github客户端及学习历程的小结相关推荐
- 使用 Flutter 开发 Github 客户端及学习历程的小结
本文由 却把青梅嗅 授权投稿 原文链接:https://juejin.im/post/5d14f3645188255c117c0fd6 本文笔者将尝试分享个人针对Flutter的 学习 并 搭建一个F ...
- 使用MVVM尝试开发Github客户端及对编程的一些思考
本文已授权 微信公众号 玉刚说 (@任玉刚)独家发布. 本文中我将尝试分享我个人 搭建个人MVVM项目 的过程中的一些心得和踩坑经历,以及在这过程中目前对 编程本质 的一些个人理解和感悟,特此分享以期 ...
- 【小白】【大学】一名嵌入式软件开发小白的单片机学习历程、心路历程、经验分享
我的嵌入式学习之路 我为什么写这篇文章 先简单介绍一下我自己 与每一个技术小白共勉 这篇文章写给谁 我的学习经验分享 我的成长之路 我的单片机学习历程分享 51系列单片机学习历程 预备知识:(可以查百 ...
- Flutter开发模式之Bloc学习
1.为什么要使用Bloc Bloc可以将展示层的代码与业务逻辑分开,从而使您的代码快速,易于测试且可重复使用. Bloc采用类似观察者模式的响应式编程,它试图通过调节何时可以发生 状态更改 并在整个应 ...
- Flutter学习笔记01:搭建Flutter开发环境
文章目录 一.Flutter概述 二.安装Git for Windows (一)下载Git (二)安装Git (三)配置环境变量 (四)命令行运行Git 三.安装Android Studio (一)下 ...
- 51单片机学习历程——硬件准备&开发环境搭建
系列文章目录 第一章 51单片机学习历程(1)--开发环境搭建 第二章 51单片机学习历程(2)--建立新的工程 第三章 51单片机学习历程(3)--点亮一颗LED 第四章 51单片机学习历程(4)- ...
- 示例:应用WPF开发的仿制GitHub客户端UI布局
一.目的: 应用WPF做的仿制GitHub客户端UI布局页面,仅供参考 二.环境: .Net Framework 4.5 三.示例: 原图: 实现效果图: 未完待续... 四.下载地址 https:/ ...
- web前端开发论文写作_2019学习Web开发指南
这是一个2019年你成为前端,后端或全栈开发者的进阶指南: 你不需要学习所有的技术成为一个web开发者 这个指南只是通过简单分类列出了技术选项 我将从我的经验和参考中给出建议 1.基础前端开发者 1. ...
- Flutter 开发实战资源推荐
这是一篇实战类资源推荐,其实Flutter的入门资料官方已经做得很好了,如果你是零基础,还是建议先啃一遍官方的教程,然后再看以下实战资源,相信在你看官方课程中涉及到的一些疑问,下面的资源会有一些刚好能 ...
最新文章
- 因为一次 Redis 分布式锁事故,整个项目组被扣绩效了。。。
- java序列化_夯实Java基础系列22:一文读懂Java序列化和反序列化
- 开源代码分析技巧之——打印调用逻辑
- C# 页面关联类似模式窗口
- java equ,Java equals方法详解
- PAT1061. 判断题
- 2017.3.18 PPT汇报--总结
- 这些年我用过的6个API接口在线管理平台
- 结构体链表赋值与删除
- 如何证明永动机不可能制造出来
- python爬虫爬取网易云音乐歌手信息
- 优化计算机组策略,windows系统优化--使你的计算机飞起来
- 老电脑可以安装win11系统吗
- 一切皆是映射:浅谈操作系统内核的缺页异常(Page Fault)
- ACM在线测试题C++实现蛇形填数
- T-Pot安装教程(保证能运行,附安装需要的所有东西清单)
- 防火墙——防火墙基础知识
- 2010两个热点话题:物联网、低碳经济
- 中国五大国家级城市群经济图谱
- ZZ教你卸载 Office 正版增值计划通知 (KB949810)-CHS
热门文章
- py6_Python 内置函数/普通自定义函数 及参数和返回值
- 论文解读(GMI)《Graph Representation Learning via Graphical Mutual Information Maximization》
- Word怎么在图片上制作一个简历封面?
- autojs之大柒侧滑栏详解
- CAN总线通信原理分析
- android 手机 p8 GRA-CL00 无法收到组播问题记录
- 尼克 超级智能 路线_他山石|《超级智能》作者尼克·波斯特洛姆:超级智能将决定人类的未来...
- 第14课:走向技术管理者的4种方式
- 统计学基础知识(三)
- 产业区块链一周动态丨江西将出台区块链五年计划,数字货币试点引发A股躁动...