使用Flutter开发Github客户端及学习历程的小结

本文已受权「玉刚说」微信公众号独家原创发布前端

本文笔者将尝试分享我的针对Flutter学习搭建一个Flutter应用 的过程。android

在这一个月学习Flutter的过程当中,我不可避免的走了不少弯路,也许这并不是坏事,可是仍是但愿将这些经历表述出来,有两个目的:git

  • 1.为本身作一个周期性的总结;
  • 2.也但愿能给想学习Flutter的读者必定实质性的参考。

关于笔者总结的Flutter入门学习计划,可直接跳转文末的 Flutter入门学习计划 小节进行查看。github

契机

上个月25号,任玉刚老师联系我,问我有没有兴趣翻译一篇Flutter的技术博客。编程

当时我尚未接触Flutter,以为这是一个督促本身学习的机会,就尝试接下了这个任务。截止今天为止(6月25日)恰好一个月,在第一周保证翻译任务 完成 以后,三周以后的今天,我基本实现了本身的另一个目标——搭建一个 Github客户端微信

这个项目运行以后,App总体效果是这样的:markdown

我将代码托管在了本身的Github上:架构

FlutterGitHubApp: Flutter开发的跨平台Github客户端.app

由于这是一个入门的项目,因此接下来也会从各方面深刻学习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的最经常使用的基础组件。

严格来讲,此时我的依然处于小白水平,勉强摸到了入门的门槛。

私下里也会偷偷吐槽一下DartFlutter,布局写着写着下面连续十数行的 ),),),);),),},),},);),),),;),},); 真的使人毛骨悚然......

第二周:状态管理

由于当初接翻译任务时,本身给本身设定了10天的期限(也是为了督促本身学习),所以第二周我须要在前3天内翻译完这篇博客:

坦白来讲,第二周的开始,这篇文章我看不懂,所以我须要学习Flutter开发过程当中的架构思想。

正所谓窥一斑而知全豹,虽然尚未真正着手Flutter项目的开发,可是经过学习Flutter的核心——状态管理,以及将 业务逻辑UI的渲染 分开学习,再加上做为一个Android开发者,理解这些概念自己就有很大的优点,学习效率天然很是的高。

学习Flutter中状态管理的资料,我强烈推荐 Vadaski 的系列文章。

冒昧推荐这几篇关于状态管理的文章,实际上 Vadaski 老师关于Flutter还有不少优秀的博客,这里不一一列举了,有兴趣的朋友能够去拜读一下。

若是读者以前学习或者了解过ReduxReactiveX相关的思想,状态管理并非很是难理解的概念。

熟悉了一系列Flutter状态管理的实现方式以后,翻译文章时就顺畅不少了,幸不辱命,最终在第十天的凌晨将文章翻译完毕:

完成以后,由于工做和私人的缘由,第二周接下来几天就没有什么时间学习Flutter了。

第二周小结

第二周的学习成果实际上和第一周差很少,由于前三天全神贯注,同时天天晚上多学了一会,再加上吃了以前的老本(以前对于Redux的状态管理和RxJava有必定的储备),学习效率仍是比较高的。

这周的感受就是,虽然本身没怎么上手项目,可是看了一些文章,对Flutter有了一些初步的认识,总结以下:

  • 1.由于Flutter自己采用的是React的思路,和咱们认知的 过程式开发 是不同的, 状态管理响应式编程 是很是重要的概念,若是以前有相关的知识储备,这个关键的知识点基本不会有什么难度,只须要关注API的使用就行了;固然,没了解过也不要紧,本小节上方的几篇关于状态管理优秀的博客,也可以帮助开发者很是快的进入Flutter的节奏中去。
  • 2.类比是一个很是好的学习方式,对于Flutter中的一些概念或者库而言:

2.1 RxDartStream相关的APIRxJava很类似;
2.2 Future相关的API能够参考Kotlin的协程,经过同步的方式编写异步的代码;
2.3 Provider其实也就是另外一种方式的依赖注入.
2.4 Redux就是参考前端的Redux引进的,没有什么变化......

第三周:学习Widget

从结果来看,第三周我走了很多弯路。

第三周的最初,我认为我须要开始深刻学习Flutter中的Widget,所以我选择fork了著名的 flutter-go, 而且开始尝试跟着这个项目敲代码。

在敲了几天以后,我发现一个严重的问题,那就是这个学习过程当中很是枯燥无聊,知识点之间没有关联性,感受本身学了一个新的Widget,就忘了上一个Widget,没坚持多久,我就hold不住了......

这也难怪,这个项目自己的目的就是 经常使用组件的demo演示与中文文档, 我一个Widget一个Widget的用法跟着敲,这给了我一种 学习碎片没有组织起来 的感受,说白了就是不成系统,效果并不明显。

所以我将 flutter-go 这个项目的定位变成了 工具书 ,接下来的学习过程当中,每当我对一个Widget的使用有了疑问,就随手打开这个APP进行查阅这个Widget的用法,效果还不错。

第四周:在实战中学习

第四周我选择了实战开发,了解个人朋友应该知道,我曾经经过不一样的开发模式(MVVMMVI)开发过两次Github的客户端,此次我也不例外。

选择以Github客户端做为实战的练手项目还有一个缘由,那就是 恋猫de小郭 老师已经开源了一个更强大的Github客户端能够做为参考:

GSYGithubAppFlutter: 超完整的Flutter项目

同时,恋猫de小郭 老师也有很是优秀的Flutter系列博客,由于该系列文章太多了,就不一一列出了,强烈建议收藏阅读。

所谓前人栽树后人乘凉,GSYGithubAppFlutter 确实在我实践过程当中提供了很大的帮助,同时,由于第四周工做阶段性告一段落,我有更多时间去学习Flutter,所以很快就把一个简单的Github客户端敲了出来:

github.com/qingmei2/Fl…

阶段性总结

在一个月的学习过程当中,我学习到了不少东西,也感受不少地方须要慢慢改进,也感受到有不少知识点须要去补。

可是令我振奋的一点是,我成功从温馨区跳了出来,而且度过了学习新知识过程当中最痛苦的一段时间(畏难情绪+新领域的陌生感);

如今面对诸如 KotlinFlutter我学哪一个比较好? 的问题,我也能够这样回答了:

小孩子才作选择,成年人固然是全都要啦!

最后,衷心感谢文中提到的各位老师对我的的帮助,其实在学习过程当中,我还参考了更多Flutter先驱者们优秀的博客和代码,实在难以一一列举,在此深表感谢。

Flutter入门学习计划?

如何入门Flutter? 以我的经验来看,入门学习Flutter能够参考下面步骤:

  • 1.经过《Flutter实战》电子书完成一个简单的计时器示例;
  • 2.经过 Dart中文社区 学习语法;
  • 3.继续学习《Flutter实战》,了解Flutter基本概念;
  • 4.下载 flutter-go,将App下载到手机中做为工具书随时随地查阅;
  • 5.1.学习一些优秀的Flutter博客系列,好比上文中 Vadaski恋猫de小郭 两位老师的文章;
  • 5.2 同时,下载优秀的Flutter开源项目学习源码;
    1. 选择一个感兴趣的项目或者方向进行实战练习。

这个学习计划 必定是有改进空间 的,也诚挚的但愿您能在评论区留下宝贵的想法和建议,这也可以为读者提供更多参考性的建议,感谢!


关于我

Hello,我是却把清梅嗅,若是您以为文章对您有价值,欢迎 ❤️,也欢迎关注个人博客或者Github

若是您以为文章还差了那么点东西,也请经过关注督促我写出更好的文章——万一哪天我进步了呢?

相关文章
相关标签/搜索