前言 FOREWORD
Flutter是谷歌公司推出的一款全新前端框架,主要用于移动应用程序(App)、网页及桌面应用程序的开发,可实现一份代码多端运行。Flutter于2021年3月3日推出2.0正式版。同时,Ubuntu操作系统宣布将Flutter作为其首选开发语言。
开发者在使用Flutter时主要通过由多个小组件(widgets)之间的相互配合与嵌套,构建出复杂的程序页面,因此对于刚入门的Flutter开发者而言,最迫切需要的就是增加Flutter组件知识的储备,以便在面对错综复杂的实战需求时,会选用最合适的组件。在谷歌公司的官方英文教程中,点击量最大、评论反响最好的也正是其“每周认识一个新组件”(Widgets of the Week)系列视频。
例如,Flutter框架已内置一个ReorderableListView组件,借助它,短短几行代码就可以实现一个支持拖动排序且可动态加载的列表,然而刚入门的开发者可能并不知道它的存在,遇到类似的业务需求时,第一反应是自己动手做,但那样就需要多写很多代码,浪费时间不说,通常并不能写好,许多边界情况考虑不周,可谓“加班加点写Bug”,勤劳地为自己和团队挖了一个又一个坑。
本书针对这些“痛点”,并以当今用户对程序界面和动画效果的高要求为出发点,秉承Flutter框架“一切皆为组件”的核心设计思想,向读者系统地介绍Flutter中各种组件,帮助广大开发者尽量避免“重复发明轮子”。在熟悉并掌握一定数量的Flutter组件后,开发者通常可在短时间内利用更少的代码实现更多的需求,轻松迭代出美观、流畅、友好、高效且符合原生系统风格的出色的应用程序。
本书分为基础篇、进阶篇与扩展篇3篇,并配有大量Flutter代码实例。读者既可以按顺序阅读全书,以增加和巩固自身的知识储备,也可先快速浏览并简单熟悉这些组件后,在实战或工作中遇到实际需求时再详细阅读相关章节。另外,有经验的开发者还可以通过本书附录中的索引迅速查询所有书中提及的Flutter组件。全书主要内容如下:
基础篇由第1~5章组成。其中,第1章介绍最基本的组件排版与布局概念;第2章详细介绍用于渲染文字和图片的组件;第3章讲解基础的文本框和按钮等组件;第4章介绍与异步操作、事件流及进度条相关的组件;第5章详细讲解大量与滚动列表相关的组件。由于这些都是Flutter框架中较为基础且常用的组件,因此本书这部分内容较为详细,涵盖了40个组件的全部属性和参数,并同时配有大量实战经验、技巧、实例等,既可帮助初学者打好基础,也适合有一定基础的Flutter开发者查漏补遗。
进阶篇由第6~10章组成。其中,第6章详细介绍Flutter的布局原理,尤其是尺寸约束方面的知识,建议仔细阅读并理解;第7章介绍一些简单的隐式动画组件,开发者借助这些组件,短短几行代码就能实现不错的动画效果;第8章介绍包括触碰、双击、平移、拖放、捏拉缩放及立体触控等与用户交互相关的组件;第9章和第10章介绍由Overlay主导的对话框、底部弹窗、导航器等功能组件,以及介绍Flutter程序根部组件的作用。
扩展篇由第11~15章组成。其中,第11章按照字母顺序,简单介绍大量Material风格和Cupertino风格的组件,以确保读者在实战中遇到类似需求时知道从合适的组件下手;第12章配合大量视频教材,全面介绍Flutter框架中与动画相关的知识,包括补间动画、交错动画、动画控制器及如何在实战中选择合适的动画组件等内容;第13章介绍Sliver机制,也就是Flutter框架中滚动组件的核心机制,可支持多种不同类型的滚动列表及顶部导航条的联动;第14章主要介绍投影、半透明、矩阵变形、模糊滤镜及裁剪边框等修饰性组件;第15章介绍与测量尺寸、提升性能、打破布局约束及深度自定义渲染相关的组件。掌握了这些知识后,相信读者一定会对Flutter框架有更深的理解。
最后,在此由衷感谢清华大学出版社赵佳霓编辑为本书提出的许多宝贵意见,并为图书出版付出的辛勤劳动;另外,还要感谢笔者的家人和朋友们,尤其是笔者的妻子,在疫情期间承担了大部分家务并悉心照料刚出生的宝宝,使笔者可以全身心投入写作。
由于笔者水平有限,且Flutter框架技术日新月异,书中难免存在不完善之处,望读者见谅。
王浩然
2021年10月
本书源代码