第一篇 入门篇
第1章 起步 2
1.1 移动开发技术简介 2
1.2 初识Flutter 9
1.3 搭建Flutter开发环境 13
1.4 Dart语言简介 25
第2章 第一个Flutter应用 36
2.1 计数器应用示例 36
2.2 Widget简介 42
2.3 状态管理 57
2.4 路由管理 63
2.5 包管理 71
2.6 资源管理 74
2.7 调试Flutter应用 80
2.8 Flutter异常捕获 87
第3章 基础组件 92
3.1 文本及样式 92
3.2 按钮 97
3.3 图片及ICON 98
3.4 单选开关和复选框 105
3.5 输入框及表单 106
3.6 进度指示器 117
第4章 布局类组件 122
4.1 布局类组件简介 122
4.2 布局原理与约束 123
4.3 线性布局 129
4.4 弹性布局 133
4.5 流式布局 136
4.6 层叠布局 139
4.7 对齐与相对定位 142
4.8 LayoutBuilder、AfterLayout 146
第5章 容器类组件 153
5.1 填充 153
5.2 装饰容器 154
5.3 变换 156
5.4 容器组件 159
5.5 剪裁 161
5.6 空间适配 163
5.7 页面骨架 169
第二篇 进阶篇
第6章 可滚动组件 176
6.1 可滚动组件简介 176
6.2 SingleChildScrollView 181
6.3 ListView 182
6.4 滚动监听及控制 191
6.5 AnimatedList 197
6.6 GridView 199
6.7 PageView与页面缓存 204
6.8 可滚动组件子项缓存 206
6.9 TabBarView 210
6.10 CustomScrollView 和 Sliver 214
6.11 自定义 Sliver 223
6.12 嵌套可滚动组件
NestedScrollView 237
第7章 功能型组件 246
7.1 导航返回拦截 246
7.2 数据共享 247
7.3 跨组件状态共享 252
7.4 颜色和主题 261
7.5 按需重构 266
7.6 异步UI更新 268
7.7 对话框详解 272
第8章 事件处理与通知 290
8.1 原始指针事件处理 290
8.2 手势识别 292
8.3 Flutter事件机制 297
8.4 手势原理与手势冲突 310
8.5 事件总线 318
8.6 通知 319
第9章 动画 326
9.1 Flutter动画简介 326
9.2 动画基本结构及状态监听 330
9.3 自定义路由切换动画 335
9.4 Hero动画 338
9.5 交织动画 343
9.6 动画切换组件 346
9.7 动画过渡组件 353
第10章 自定义组件 362
10.1 自定义组件方法简介 362
10.2 组合现有组件 363
10.3 组合实例:TurnBox 366
10.4 CustomPaint与Canvas 370
10.5 自绘实例:圆形背景渐变
进度条 375
10.6 自绘组件:CustomCheckbox 382
10.7 自绘组件: DoneWidget 393
10.8 水印组件实例:文本绘制与
离屏渲染 396
第11章 文件操作与网络请求 413
11.1 文件操作 413
11.2 通过HttpClient发起HTTP
请求 415
11.3 HTTP请求库dio 422
11.4 实例:HTTP分块下载 424
11.5 使用WebSocket 429
11.6 使用Socket API 432
11.7 JSON转Dart Model类 433
第12章 Flutter 扩展 444
12.1 包和插件 444
12.2 Flutter Web 446
第13章 国际化 449
13.1 让App支持多语言 449
13.2 实现Localizations 453
13.3 使用Intl包 455
13.4 国际化常见问题 459
第14章 Flutter核心原理 461
14.1 Flutter UI框架 461
14.2 Element、BuildContext和RenderObject 463
14.3 Flutter启动流程和渲染管线 468
14.4 布局过程 477
14.5 绘制一:绘制原理及Layer 492
14.6 绘制二:组件树绘制流程 496
14.7 绘制三:Layer 实例 505
14.8 绘制四:Compositing 510
第三篇 实例篇
第15章 一个完整的Flutter应用 524
15.1 GitHub客户端示例 524
15.2 Flutter App代码结构 525
15.3 Model类定义 526
15.4 全局变量及共享状态 529
15.5 网络请求封装 532
15.6 App入口及主页 536
15.7 登录页 547
15.8 多语言和多主题 549