第1部分 Dart语言简介
第1章 Dart语言概述
1.1 Dart语言
1.1.1 Dart语言的发展史
1.1.2 Dart语言的工作方式
1.1.3 Dart语言的基本语法和工具
1.2 Flutter与Dart
1.2.1 提升生产力
1.2.2 易于学习
1.2.3 成熟度
1.3 Dart语言的结构
1.3.1 Dart运算符
1.3.2 数据类型和变量
1.3.3 类型推断—动态机制
1.3.4 控制流和循环
1.3.5 函数
1.3.6 数据结构、集合和泛型
1.3.7 泛型
1.3.8 泛型的使用原因和时机
1.3.9 泛型和Dart字面值
1.4 Dart中的面向对象编程
1.4.1 Dart面向对象特性
1.4.2 封装
1.4.3 继承
1.4.4 抽象
1.4.5 多态
1.5 本章小结
1.6 进一步阅读
第2章 Dart中级编程
2.1 Dart类和构造方法
2.1.1 枚举类型
2.1.2 级联符号
2.1.3 构造方法
2.1.4 字段访问器—get和set
2.1.5 静态字段和方法
2.1.6 类继承机制
2.2 抽象类、接口和混入
2.2.1 抽象类
2.2.2 接口
2.2.3 混入—向类中添加行为
2.2.4 可调用的类、顶级函数和变量
2.3 理解Dart库和包
2.3.1 导入机制和库的使用
2.3.2 创建Dart库
2.3.3 Dart包
2.3.4 包结构
2.3.5 Stagehand—Dart项目生成器
2.3.6 pubspec文件
2.3.7 包依赖关系—pub
2.4 基于Future和Isolate的异步编程
2.4.1 Dart Future
2.4.2 Dart Isolate
2.5 基于Dart的单元测试
2.5.1 Dart test包
2.5.2 单元测试
2.6 本章小结
第3章 Flutter简介
3.1 移动应用程序开发框架间的比较
3.1.1 Flutter解决的问题
3.1.2 现有框架间的差异
3.2 Flutter编译(Dart)
3.2.1 开发编译
3.2.2 发布编译
3.2.3 所支持的平台
3.3 Flutter渲染机制
3.3.1 Web技术
3.3.2 框架和OEM微件
3.3.3 自身的渲染机制
3.4 微件简介
3.4.1 可组合性
3.4.2 不可变性
3.4.3 一切均是微件
3.5 Hello Flutter
3.5.1 pubspec文件
3.5.2 运行生成后的项目
3.6 本章小结
第2部分 Flutter界面— 一切均为微件
第4章 微件—在Flutter构建布局
4.1 无状态/有状态微件
4.1.1 无状态微件
4.1.2 有状态微件
4.1.3 代码中的无状态微件和有状态微件
4.1.4 继承的微件
4.1.5 微件中的key属性
4.2 内建微件
4.2.1 基本微件
4.2.2 Text微件
4.2.3 Image微件
4.2.4 材料设计和iOS Cupertino微件
4.3 内建布局微件
4.3.1 容器
4.3.2 样式和定位
4.3.3 其他微件(手势、动画和转换)
4.4 利用微件创建UI(Friend Favors管理器应用程序)
4.4.1 应用程序屏幕
4.4.2 应用程序代码
4.4.3 应用程序主屏幕
4.4.4 请求任务屏幕
4.5 创建自定义微件
4.6 本章小结
第5章 处理用户手势和输入
5.1 处理用户手势
5.1.1 指针
5.1.2 手势
5.1.3 Material Design微件中的手势
5.2 输入微件
5.2.1 FormField和TextField
5.2.2 Form微件
5.3 验证输入(Form)
5.4 自定义输入和FormField
5.4.1 创建自定义输入
5.4.2 自定义输入微件示例
5.5 整合工作
5.5.1 任务屏幕
5.5.2 任务请求屏幕
5.6 本章小结
第6章 主题和样式
6.1 主题微件
6.1.1 Theme微件
6.1.2 主题的应用
6.1.3 Platform类
6.2 Material Design准则
6.2.1 MaterialApp微件
6.2.2 Scaffold微件
6.2.3 自定义主题
6.3 iOS Cupertino
6.3.1 CupertinoApp
6.3.2 Cupertino应用
6.4 使用自定义字体
6.4.1 将字体导入Flutter项目中
6.4.2 在应用程序中重载默认的字体
6.5 基于LayoutBuilder和MediaQuery的动态样式
6.5.1 LayoutBuilder
6.5.2 Medi Query
6.5.3 其他响应类
6.6 本章小结
第7章 路由机制—屏幕间的导航
7.1 Navigator微件
7.1.1 Navigator
7.1.2 Overlay
7.1.3 路由
7.1.4MaterialPageRoute和CupertinoPageRoute
7.1.5 整合操作
7.1.6 WidgetsApp方式
7.2 命名路由
7.2.1 移至命名路由
7.2.2 从Route中检索结果
7.3 屏幕过渡
7.3.1 PageRouteBuilder
7.3.2 自定义过渡转换操作
7.4 Hero动画
7.4.1 Hero微件
7.4.2 实现Hero转换
7.5 本章小结
第3部分 开发全功能的应用程序
第8章 Firebase插件
8.1 Firebase概述
8.1.1 设置Firebase
8.1.2 将Flutter应用程序连接至Firebase
8.2 Firebase身份验证
8.2.1 在Firebase中启用身份验证服务
8.2.2 身份验证屏幕
8.2.3 利用Firebase进行登录
8.3 基于Cloud Firestore的NoSQL数据库
8.3.1 启用Firebase上的Cloud Firestore
8.3.2 Cloud Firestore和Flutter
8.3.3 从Firestore中加载帮助任务
8.3.4 更新Firebase中的帮助任务
8.3.5 在Firebase上保存一项帮助任务
8.4 基于Firebase Storage的Cloud Storage
8.4.1 Firebase Storage简介
8.4.2 添加Flutter存储依赖关系
8.4.3 向Firebase上传文件
8.5 Firebase AdMob和广告
8.5.1 AdMob账户
8.5.2 创建一个AdMob账户
8.5.3 Flutter中的AdMob
8.5.4 在Flutter中显示广告
8.6 基于Firebase ML Kit的机器学习
8.6.1 向Flutter中添加ML Kit
8.6.2 在Flutter中使用标记检测器
8.7 本章小结
第9章 构建自己的Flutter插件
9.1 创建包/插件项目
9.1.1 Dart包和Flutter包
9.1.2 启动一个Dart包项目
9.1.3 Flutter插件包
9.2 插件项目结构
9.2.1 MethodChannel类
9.2.2 实现Android插件
9.2.3 实现iOS插件
9.2.4 Dart API
9.2.5 插件包示例
9.2.6 使用插件
9.3 向包中添加文档
9.3.1 文档文件
9.3.2 库文档
9.3.3 生成文档
9.4 发布包
9.5 插件开发中的一些建议
9.6 本章小结
第10章 从Flutter应用程序访问设备功能
10.1 从应用程序启动一个URL
10.1.1 显示链接
10.1.2 打开一个链接
10.2 管理应用程序权限
10.2.1 管理Flutter上的权限
10.2.2 使用permission_handler插件
10.3 导入联系人
10.3.1 利用contact_picker导入联系人
10.3.2 基于permission_handler的联系人权限
10.4 集成相机设备
10.4.1 利用image_picker拍摄照片
10.4.2 基于permission_handler的相机权限
10.5 本章小结
第11章 平台视图和地图集成
11.1 显示一幅地图
11.1.1 平台视图
11.1.2 创建平台视图微件
11.1.3 google_maps_flutter插件
11.1.4 利用google_maps_flutter显示一幅地图
11.2 向地图中添加标记
11.2.1 Marker类
11.2.2 向GoogleMap微件中添加标记
11.3 添加地图交互行为
11.3.1 动态添加标记
11.3.2 GoogleMapController
11.3.3 获取GoogleMapController
11.3.4 地图相机与位置间的动画效果
11.4 使用Google Places API
11.4.1 启用Google Places API
11.4.2 google_maps_webservice插件
11.4.3利用google_maps_webservice插件获取地址
11.5 本章小结
第4部分 复杂应用程序的高级资源
第12章 测试、调试和开发
12.1 Flutter测试—单元和微件测试
12.1.1 微件测试
12.1.2 flutter_test包
12.1.3 testWidgets()函数
12.1.4 微件测试示例
12.2 调试Flutter应用程序
12.2.1 Observatory工具
12.2.2 附加的调试特性
12.2.3 DevTools
12.3 分析Flutter应用程序
12.3.1 Observatory分析器
12.3.2 profile模式
12.4 Flutter微件树
12.5 应用程序开发的准备阶段
12.5.1 release模式
12.5.2 发布Android应用程序
12.5.3 发布iOS应用程序
12.6 本章小结
第13章 改进用户体验
13.1 Flutter中的可访问性以及翻译功能
13.1.1 Flutter的访问支持
13.1.2 Flutter国际化
13.1.3 向Flutter应用程序中添加本地化功能
13.2 基于平台通道的本地和Flutter间的通信
13.2.1 平台通道
13.2.2 消息编码解码
13.3 创建后台进程
13.3.1 Flutter中的compute()函数
13.3.2 compute()函数示例
13.3.3 后台进程
13.3.4 初始化计算
13.4 添加Android代码并在后台运行Dart代码
13.4.1HandsOnBackgroundProcessPlugin类
13.4.2 BackgroundProcessService类
13.5 添加iOS代码并于后台运行Dart代码
13.6 本章小结
第14章 微件图形控制
14.1 利用Transform类转换微件
14.1.1 Transform微件
14.1.2 Matrix4类
14.2 转换类型
14.2.1 旋转转换
14.2.2 缩放转换
14.2.3 平移转换
14.2.4 组合转换
14.3 转换微件
14.3.1 旋转微件
14.3.2 缩放微件
14.3.3 平移微件
14.3.4 使用多重转换
14.4 使用自定义画笔和画布
14.4.1 Canvas类
14.4.2 CustomPaint微件
14.4.3 CustomPainter对象
14.5 示例
14.5.1 定义微件
14.5.2 定义CustomPainter
14.6 射线图的变化版本
14.6.1 定义微件
14.6.2 定义CustomPainter
14.7 本章小结
第15章 插件的动画效果
15.1 动画简介
15.1.1 Animation类 15.1.2 AnimationController类
15.1.3 TickerProvider和Ticker
15.1.4 CurvedAnimation类
15.1.5 Tween类
15.2 使用动画
15.2.1 旋转动画
15.2.2 缩放动画
15.2.3 平移动画
15.2.4 多重转换和自定义Tween
15.2.5 自定义Tween类
15.3 使用AnimatedBuilder
15.3.1 AnimatedBuilder类
15.3.2 再访动画
15.4 使用AnimatedWidget
15.4.1 AnimatedWidget类
15.4.2 利用AnimatedWidget重新实现动画
15.5 本章小结