前言 Flutter是谷歌公司的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。现在,主流的移动开发平台是Android和iOS,每个平台上的开发技术不一样,如在 Android 中支持Java与Kotlin,而在iOS中支持ObjectC与Swift,针对每一个开发平台都需要特定的人员开发。 轻松时别忘了努力,忙碌时别忘了梦想,万物皆有裂痕,那是光照进来的地方。 在本书的每一章、每一节落笔前的构思时,笔者都在考虑如何才能把各个知识点由简到详并更有条理地论述,也在考虑如何才能以简单易懂的方式使读者快速理解每个知识点并在实际开发项目中使用。 本书共分两篇,基础篇对横向分析的组件进行精讲分析; 实战篇对纵向的App主体结构进行搭建。基础篇每一个环节都有对应的示例,由简至繁共提供了300多个示例,读者可以一边阅读一边练习,以掌握Flutter开发中所使用的常见组件的功能,通过这一套组件示例的淬炼,可以使读者在Flutter开发中得心应手。实战篇系统讲解一个App从创建项目到项目UI系统搭建完成,读者可以通过本书思路与实战内容学会从0架构一个App。 本书提供了源码基础架构,读者可以直接在此基础上搭建企业级应用。 本书主要内容 本书主要从两方面详细讲解Flutter的组件,基础篇(第1~22章)对Flutter开发中常用的每一个组件,系统讲解从基本使用到如何配置,并深入分析每一个属性; 实战篇(第23章)综合基础篇的组件实现一个类似抖音视频类应用效果实战案例,讲解如何使用Flutter从0到1开发一个App。 第1章简述Flutter与Dart的发展历程,以及Dart语言的核心基础。 第2章介绍MaterialApp组件的使用场景及设计理念,通过Demo实例详细讲解MaterialApp与CupertinoApp的基本使用、路由功能配置、主题ThemeData的详细配置使用、多主题配色功能、多语言环境等。 第3章分析Scaffold组件的使用场景,通过图文方式综述Scaffold组件的基本组成部分及适用场景,将会分析讲解FloatingActionButton悬浮按钮的详细配置、侧拉页面Drawer的配置使用、BottomNavigationBar配置底部导航栏菜单。 第4章是对标题栏AppBar的详细分析,会讲解AppBar的基本使用配置、TabBar实现多标签栏配置、TabPageSelector等。 第5章详细分析文本显示组件Text,详细讲解Text的使用、宽高度适配、文本样式的配置、自定义字体、富文本RichText及流式布局的文本标签等。 第6章详细讲解文本输入框TextField组件,详细讲解TextField的输入格式限制、边框样式InputDecoration、提示文本、文本控制器TextEditingController、焦点控制、光标样式配置、键盘配置及一个搜索框的实现等。 第7章综述容器Container组件的使用场景、宽高设定、内外边距设定、背景图片、背景阴影、圆角边框、演变样式、AnimatedContainer动画组件、自定义打洞效果与手撕优惠券的效果、ConstrainedBox等。 第8章详细分析按钮MaterialButton组件,详细讲解MaterialButton、其他常见的Button组件、悬浮按钮的旋转变换、IconButton系列按钮、自定义动画效果按钮AnimatedButton、自定义进度圆圈交互的动画按钮等。 第9章详细分析UI布局组件,内容涉及线性布局Column与Row、帧布局Stack、弹性布局Flex、流式布局Wrap、基于Wrap实现的Tag标签、流式布局Flow、自定义圆形动态弹出菜单、自定义类似开源中国的圆形动态菜单、自定义向上弹出的动态菜单等。 第10章讲解图片组件Image,内容涉及Image组件的基本使用、Image组件多种创建方式、加载网络图片、加载本地图片、图像混合模式BlendMode分析、圆角图片的加载、CachedNetworkImage组件的使用分析、加载圆角图片、高斯模糊效果、将Widget保存为图片、图片添加水印、缩放图片、拖动图片等。 第11章讲解复选框CheckBox组件,内容涉及CheckBox基本创建、使用及常用属性配置、CheckboxListTitle组件使用分析、自定义美化复选框效果等。 第12章讲解单选框Radio组件,内容涉及Radio组件的基本使用、自定义Radio单选框效果、RadioListTitle基本使用、优惠券选择弹框。 第13章讲解开关Switch组件,Switch的基本使用及SwitchListTitle组件的使用。 第14章讲解手势处理系列组件,内容涉及GestureDetector组件、Ink与InkWell组件的使用分析、InkResponse组件使用分析等。 第15章讲解滑动视图ScrollView系列组件,涉及SingleChildScrollView、NestedScrollView组件与SliverAppBar组件使用分析、CustomScrollView组件、滑动折叠效果的AppBar案例、NotificationListener、轮子滚动ListWheelScrollView、自定义抽屉效果DragContainer组件等。 第16章讲解列表ListView组件,内容涉及ListView组件的基本使用、控制器ScrollController的分析、ListView结合RefreshIndicator实现下拉刷新、SmartRefresher组件实现下拉刷新与上拉加载更多效果等。 第17章讲解九宫格组件GridView,内容包括GridView组件的使用场景及常用的构建方式等。 第18章讲解Clip裁剪组件系列组件,涉及矩形裁剪ClipRect、圆角矩形裁剪ClipRRect、椭圆形裁剪ClipOval、路径裁剪ClipPath及自定义五角星评分组件等。 第19章讲解Matrix4矩阵,涉及Matrix4矩阵简述、Transform组件的综合使用、通过Matrix4实现平移、旋转、缩放等。 第20章讲解绘图专题,涉及基本图形的绘制、Path构建各种自定义图形、贝塞尔曲线绘制、绘制文本、绘制图片及绘制动画的实现等。 第21章为动画专题,内容涉及Animated系列的动画组件、Tween系列的动画、自定义抖动动画组件ShakeAnimationWidget、自定义闪光过渡动画、Hero切换过渡动画、Material motion规范的预构建动画等。 第22章讲解其他常用Widget,本章为其他常用组件的补充描述章节,内容涉及WidgetsBindingObserver、FittedBox、FutureBuilder、刷新圆圈组件等。 第23章为综合案例实战内容,类似抖音视频播放类App的UI构建,内容涉及项目打包版本配置、基础框架的封装、权限请求封装、启动项配置、广告倒计时页面、视频播放列表的首页页面、下拉自动回弹的个人中心页面等。 本书源代码 扫描下方二维码,即可下载本书源代码。 本书源代码下载 致谢 在本书完稿之际,回顾6个多月的写作时光,为自己的黄金时间分割方法,为自己的坚持,为每周的骑行释放,为自己的不为环境变化而放弃的执着而感到欣慰与自豪。 感谢我的家人,在本书的创作期间,给予我奋斗的精神力量与生活方面无微不至的照顾,使我能够全身心地利用每一天的每一分钟。 感恩我曾经所经历过的、挥洒过汗水和青春的学校与公司,以及项目中的每个人与每件事情,这些都是我生命中的记忆,是记忆也是每天的动力。 同时要感谢我的工作伙伴Java大神刘俊亮、李少卿所提的方向建议,Android大神马岩松、班磊及iOS大神魏贤对本书的纠错。 最后感谢清华大学出版社的赵佳霓编辑,本书能够顺利出版离不开她细心、负责任的工作态度。 由于作者写作水平与时间有限,书中难免存在不妥之处,请读者见谅,并提宝贵意见。 赵龙2021年7月