本书以实战为导向,由浅入深地介绍了Flutter开发过程中的基础体系、实战技巧和源码分析。通过本书,读者可以快速掌握Flutter的开发技能,并通过实战学习Flutter的源码设计。同时,本书还配套全面的学习例程与完整的开源项目,真正做到为读者的Flutter学习旅程披荆斩棘。
本书适合有一定开发经验的学生、研究者或从业者,尤其是 Android、iOS或前端开发人员阅读。
1.案例丰富。包含近50个实战案例提供丰富的知识解读
2.绝佳体验。知识体系完整+内容通俗易懂+行文直白清爽+注释详细到位
3.内容全面。框架设计+设计思想+实战技巧+源码分析
4.配套完备。超过14000star的GitHub项目,配套实战代码
郭树煜
作者拥有5年以上的移动端开发经验,长期负责移动端的技术架构与业务实现,在跨平台领域从 React Native到Flutter拥有丰富的线上项目开发经历。
目前作者在GitHub的开源项目收获30k+的star,其中的Flutter实战项目gsy_github_app_flutter、Flutter学习演示项目gsy_flutter_demo和Flutter电子书项目gsy_flutter_book已收获了超过14000的star,并且gsy_github_app_flutter项目更是位居GitHub个人Flutter开源项目star数第一名。
作者长期活跃于掘金(恋猫de小郭)、知乎(恋猫)等技术平台,并维护有GSYTech公众号,持续产出着各类移动领域相关的技术文章,欢迎交流互动。
前言
笔者自2016年开始接触跨平台相关的工作,最初接触的框架是Cordova和Ionic,再到后面是React Native和Weex。而接触Flutter是从2017年开始的,那时候Flutter社区还不如现在成熟,很多资料都需要自己从源码中查找,而从那时起,笔者便积攒了不少与Flutter相关的资料。
2018年,机缘巧合地参与了掘金举办的Flutter征文比赛并获奖后,笔者就开始不间断地在掘金分享与Flutter相关的文章。在之后一年多的时间内,完成了近24篇Flutter的技术文章分享,如今无论是系列文章数还是单篇点赞阅读数,均已跃居掘金社区Flutter标签排名第一位。
除了产出文章,笔者在GitHub也相继开源了Flutter实战项目gsy_github_app_flutter、Flutter学习演示项目gsy_flutter_demo和Flutter电子书项目gsy_flutter_book。这三个项目至今收获了近12 000个Star,占据了笔者所有GitHub项目总Star数一半之多,由此也反映出Flutter开发者在这一年多时间内的迅猛增长。
随着文章的增多与阅读群体的扩大,笔者忽然发现原有文章的知识体系显得过于松散,并且某些内容对于初学者不够友好。因为Flutter近两年的快速发展,有些知识点已经过于陈旧,所以笔者萌生了重新整理Flutter知识内容的想法。当时恰好有幸收到了电子工业出版社宋亚东先生的邀请,于是顺理成章就有了本书的诞生。
在开始编写本书后才发现,写书比起写文章复杂得多,因为写文章时大多比较碎片化,有时候文章的内容会以读者已经掌握的基础为前提。但是写书时,更多需要考虑读者的阅读感受和理解能力,梳理的知识体系和讲解的知识点不能再像文章一样粗犷,所以投入的时间与精力也成倍上升。同时,在整理本书的过程中,笔者也收获了不少新的感悟,这些感悟最终也融入本书中被沉淀下来。
作为如今大前端浪潮中的一员,从Android到跨平台再到如今的大前端领域,笔者参与过各式各样平台的线上项目开发,也开源过Flutter、Java、Kotlin、React Native、Weex等实战项目。如今回顾起来,学习一门语言或者框架的根本不在于如何使用,而是需要理解它们的设计理念,学习它们解决问题的思路。无论什么语言或者框架,它们最终解决问题的思路都会殊途同归。
所以,本书不只是Flutter的入门教程,更会给读者深入解析Flutter框架设计中的方方面面,为读者由浅入深地介绍Flutter的设计思想,然后通过实战技巧与源码解析为读者的Flutter之路披荆斩棘,带读者走进不一样的Flutter世界。
同时,本书也将结合gsy_flutter_demo与gsy_github_app_flutter项目为读者带来完整的实战体验,欢迎读者在掘金和GitHub上直接进行交流,笔者将尽自己所能为大家排忧解惑。
GitHub地址:https://github.com/CarGuo。
掘金地址:https://juejin.im/user/582aca2ba22b9d006b59ae68/posts。
郭树煜
原文:int类型的取值范围为-2^53~2^53
参考官网https://dart.dev/guides/language/language-tour#built-in-types
不同平台不一样,即使在JS上,原文写的范围也不对,正确的是-2^53~2^53-1。
enum的例子多了一个‘}’
代码和注释不对应,代码Duration(seconds: 1)改为Duration(seconds: 2)
最后一行代码 Duration(seconds: 1)
应该为 Duration(seconds: 2)