本书由浅入深、循序渐进地通过大量示例阐述了Flutter移动应用开发的基础知识,同时介绍如何使用Flutter框架和Dart语言来开发移动App,如何使用Flutter框架进行移动应用开发,还介绍了很多利用Flutter移动应用开发的技术。本书共11章,包括:Flutter简介,Dart基础语法,基本组件,容器类组件,Flutter交互组件和导航栏,Flutter的对话框组件,事件监听和处理,Flutter的动画和导航,Flutter的文件和网络,Flutter的数据存储,综合案例—基于Flutter的手机文件管理设计与实现。本书示例采用Dart 2.10.4,Flutter采用Flutter 2.0版本开发工具进行开发,所有示例和案例都有详细说明,并且配有习题与练习,以指导读者深入学习。
本书重点突出,内容丰富,适合作为高等院校计算机及相关专业学生的教材或教学参考书,也适合学习Dart语言的初学者使用。
本书遵循“从简单到复杂”“从抽象到具体”的原则,书中通过各个章节穿插了很多示例,提供了移动应用开发从入门到实际应用所的知识。
本书每章都配备有课后习题,并且每章都有一个综合案例,方便教师教学使用。
每一章都有和本章知识点相关的案例与实验,以帮助读者顺利完成开发任务。
随着大数据、人工智能和互联网+的不断发展,移动应用技术也在随之不断前行,更多智能数据、内容和应用都要在移动终端上运行。Flutter作为移动应用开发的主要技术之一,由美国谷歌公司开发框架,一直在移动App开发方面占据着主导地位。从手机与计算机上网的使用率来看,目前通过手机上网的用户远远高于计算机端,足以证明未来的移动互联网的发展前景。
本书聚焦移动应用开发技术,深入浅出地讲解移动应用开发所需要的几乎全部基础内容,帮助读者快速了解Flutter移动应用开发,在项目中灵活应用各种开发技术和方法。
本书围绕移动应用开发基础和移动App编程技巧,采用Flutter框架主流的面向对象语言—Dart语言,在内容的编排上力争体现新的教学思想和方法。本书遵循“从简单到复杂”“从抽象到具体”的原则,书中通过各个章节穿插了很多示例,提供了移动应用开发从入门到实际应用所的知识。学生除了要在课堂上学习程序设计的理论方法,掌握编程语言的语法知识和编程技巧外,还要进行大量的课外练习和实践操作。为此本书每章都配备有课后习题,并且每章都有一个综合案例,方便教师教学使用。
本书共11章。第1章是Flutter简介,第2章介绍Dart基础语法,第3章介绍基本组件,第4章介绍容器类组件,第5章介绍Flutter交互组件和导航栏,第6章介绍Flutter的对话框组件,第7章介绍事件监听和处理,第8章介绍Flutter的动画和导航,第9章介绍Flutter的文件和网络,第10章介绍Flutter的数据存储,第11章为综合案例—基于Flutter的手机文件管理设计与实现。本书示例采用Dart 2.10.4,Flutter采用Flutter 2.0版本开发工具进行开发,所有示例和案例都有详细说明。
本书内容全面,案例新颖,针对性强。书中所介绍的示例都是在Windows 10操作系统下调试运行通过的。每一章都有和本章知识点相关的案例与实验,以帮助读者顺利完成开发任务。从应用程序的设计到应用程序的发布,读者都可以按照书中所讲述内容实施。
本书由夏辉、杨伟吉、张书峰任主编,尤澜涛、董妍彤、王福顺任副主编。夏辉负责全书整体策划、实验、案例和第7、8章的编写,浙江医科大学杨伟吉负责编写第2、4章,苏州工业园区服务外包职业学院张书峰负责编写第3、9章,苏州工业园区服务外包职业学院尤澜涛负责编写第1、5章,吉林大学董妍彤负责编写第11章,河北农业大学王福顺负责编写第6、10章,参编的还有沈阳师范大学软件学院王利、穆宝良和白萍,他们主要负责PPT编写与课后习题审核,同时本书由李航教授和董妍彤教授进行主审,并对本书初稿在教学过程中存在的问题提出了宝贵的意见。本书在编写过程中也借鉴了中外参考文献中的原理知识和资料,在此一并感谢。
由于时间仓促,书中难免存在不妥之处,请读者谅解,并提出宝贵意见。
前言
第1章 Flutter简介1
1.1 Flutter概述1
1.2 环境搭建1
1.2.1 下载Flutter SDK1
1.2.2 IDE的下载3
1.2.3 安装插件6
1.2.4 测试环境7
1.3 Flutter项目文件结构11
1.4 Flutter框架介绍13
1.5 Flutter主题14
1.6 本章小结14
1.7 习题与练习14
第2章 Dart基础语法15
2.1 基本类型的操作15
2.1.1 数值型数据15
2.1.2 布尔类型17
2.1.3 字符串18
2.1.4 列表20
2.1.5 Map类型22
2.1.6 dynamic类型24
2.2 运算符24
2.3 流程控制27
2.4 Dart的方法30
2.5 类和对象33
2.6 继承和抽象类39
2.6.1 类的继承39
2.6.2 抽象类41
2.7 接口42
2.8 Mixins43
2.9 运算符重载44
2.10 泛型45
2.11 本章小结48
2.12 习题与练习48
第3章 基本组件49
3.1 文本组件49
3.2 容器组件50
3.3 图像组件52
3.4 图标组件55
3.5 列表组件56
3.6 按钮组件59
3.7 文本和字体62
3.8 输入框64
3.9 GridView组件65
3.10 布局组件69
3.11 本章小结80
3.12 习题与练习80
第4章 容器类组件81
4.1 Flutter容器类组件81
4.1.1 Container组件81
4.1.2 Padding组件82
4.1.3 FittedBox组件83
4.1.4 ConstrainedBox组件84
4.1.5 SizedBox组件85
4.1.6 Placeholder组件86
4.2 布局组件88
4.2.1 Row组件88
4.2.2 Column组件89
4.2.3 Stack组件90
4.2.4 Table组件91
4.2.5 Wrap组件93
4.2.6 GridView组件95
4.2.7 ReorderableListView组件98
4.3 本章小结100
4.4 习题与练习100
第5章 Flutter交互组件和导航栏101
5.1 有状态Widget101
5.2 交互组件103
5.2.1 Draggable组件103
5.2.2 LongPressDraggable组件104
5.2.3 DragTarget组件105
5.2.4 Dismissible组件108
5.2.5 IgnorePointer组件110
5.2.6 Navigator组件111
5.2.7 GestureDetector组件114
5.3 导航栏116
5.3.1 BottomNavigationBar组件117
5.3.2 TabBar组件121
5.3.3 TabBarView组件124
5.3.4 Drawer组件127
5.4 本章小结129
5.5 习题与练习130
第6章 Flutter的对话框组件131
6.1 对话框组件131
6.1.1 AlertDialog组件131
6.1.2 SimpleDialog组件134
6.1.3 CupertinoAlertDialog 组件135
6.1.4 BottomSheet组件137
6.1.5 AboutDialog组件139
6.2 自定义对话框组件141
6.2.1 自定义Loading组件141
6.2.2 自定义个性化组件142
6.2.3 简约iOS风格对话框144
6.2.4 Toast组件146
6.3 特殊组件147
6.3.1 AppBar组件147
6.3.2 Scoffold组件153
6.4 本章小结155
6.5 习题与练习155
第7章 事件监听和处理156
7.1 指针事件监听156
7.2 Gesture手势识别158
7.3 Listener监听器165
7.4 跨组件传递事件167
7.4.1 EventBus传递事件167
7.4.2 Notification传递事件168
7.4.3 Controller传递事件173
7.5 监听组件事件175
7.5.1 返回键监听175
7.5.2 输入框组件监听176
7.6 本章小结179
7.7 习题与练习179
第8章 Flutter的动画和导航180
8.1 Tween动画180
8.2 Hero动画182
8.3 第三方包动画184
8.3.1 AnimatedTextKit组件184
8.3.2 Animation组件195
8.3.3 Rive组件199
8.3.4 Lottie组件200
8.4 本章小结201
8.5 习题与练习202
第9章 Flutter的文件和网络203
9.1 文件操作203
9.2 异常处理206
9.3 网络连接208
9.3.1 HttpClient连接方式208
9.3.2 Http 连接方式210
9.3.3 Dio连接方式213
9.4 Socket连接216
9.5 Flutter的异步通信217
9.5.1 Future异步通信方式217
9.5.2 FutureBuilder网络异步通信组件220
9.6 Flutter的通信数据—Json数据处理224
9.6.1 静态Json数据解析225
9.6.2 动态Json数据解析227
9.7 本章小结228
9.8 习题与练习229
第10章 Flutter的数据存储230
10.1 文件存储230
10.2 SharedPreferences存储方式231
10.3 数据库存储方式235
10.3.1 创建sqflite数据库236
10.3.2 数据库的操作236
10.3.3 使用SQL助手237
10.3.4 数据存储案例243
10.4 本章小结257
10.5 习题与练习257
第11章 综合案例——基于Flutter的手机文件管理设计与实现258
11.1 需求分析258
11.1.1 功能需求258
11.1.2 应用特色259
11.2 系统设计261
11.2.1 系统设计原理262
11.2.2 设计原则263
11.3 服务器端设计263
11.4 系统总体配置263
11.5 系统UI页面264
11.6 公共工具类设计274
11.7 自定义组件276
11.8 网络连接286
11.9 项目的打包287
11.10 本章小结287
11.11 习题与练习288
参考文献289