第1章 认识Flutter 1
1.1 移动开发简史 1
1.2 Flutter的架构 3
1.3 Flutter家族 4
1.3.1 Dart 5
1.3.2 Material Design 6
1.3.3 Fuchsia 7
1.3.4 Flutter Web 7
1.4 第一个应用—计数器 8
1.4.1 创建第一个应用 8
1.4.2 Flutter项目的结构 9
1.4.3 计数器应用的实现 10
1.5 原理浅析—3棵重要的树 14
1.6 组件渲染过程简述 16
1.7 小结与心得 18
第2章 Dart入门 19
2.1 “Hello, Dart”程序 19
2.2 重要概念 21
2.2.1 变量和常量 21
2.2.2 数据类型 23
2.2.3 运算符 28
2.2.4 流程控制 30
2.2.5 函数 34
2.2.6 注释 37
2.3 面向对象编程 38
2.3.1 类 38
2.3.2 类方法 39
2.3.3 静态变量与方法 40
2.3.4 继承 41
2.3.5 抽象类 43
2.3.6 构造函数 43
2.3.7 枚举类 47
2.4 小结与心得 48
第3章 一切皆为组件 49
3.1 有状态组件与无状态组件以及
相关函数 49
3.1.1 有状态组件和无状态组件 49
3.1.2 setState()函数 52
3.1.3 initState()函数 53
3.1.4 dispose()函数 53
3.1.5 build()函数 54
3.2 内置的无状态组件 54
3.2.1 Text组件 55
3.2.2 Image组件 58
3.2.3 Icon组件 59
3.2.4 Button组件 60
3.3 内置的有状态组件 62
3.3.1 TextField组件 62
3.3.2 Form组件 66
3.3.3 Switch组件、Checkbox组件和
Radio组件 69
3.4 常用容器组件 73
3.4.1 Container组件 74
3.4.2 Padding组件和Align组件 76
3.5 可滚动组件 77
3.5.1 ListView组件 78
3.5.2 GridView组件 80
3.6 结构化组件 82
3.6.1 Scaffold组件 82
3.6.2 AppBar组件与Drawer组件 86
3.7 根组件—WidgetsApp 93
3.8 元素树 94
3.8.1 不变的组件 94
3.8.2 可变的元素 96
3.8.3 组件的Key对象 97
3.9 小结与心得 101
第4章 布局管理 102
4.1 布局约束 102
4.1.1 盒子协议 103
4.1.2 滑动协议 104
4.2 RenderObject树 105
4.3 布局约束实践 106
4.3.1 单个子组件的布局 106
4.3.2 多个子组件的布局 107
4.3.3 可滚动的布局 112
4.4 内置布局组件 120
4.4.1 线性布局组件 120
4.4.2 Stack布局组件 124
4.4.3 Expanded布局组件 126
4.4.4 Table布局组件 127
4.5 小结与心得 129
第5章 Dart进阶 130
5.1 混入 130
5.2 异步编程 133
5.2.1 事件循环 134
5.2.2 微任务队列 135
5.2.3 事件队列 135
5.2.4 异步函数 138
5.3 泛型 140
5.3.1 限制类型 140
5.3.2 泛型方法 141
5.4 小结与心得 141
第6章 动画管理 142
6.1 动画的4个要素 142
6.1.1 插值器 142
6.1.2 曲线模型 143
6.1.3 TickerProvider 144
6.1.4 Animation类 144
6.2 动画组件 149
6.2.1 内置动画组件 149
6.2.2 AnimatedWidget 151
6.2.3 AnimatedBuilder 153
6.3 隐式动画组件 154
6.3.1 AnimatedContainer组件 155
6.3.2 AnimatedOpacity组件 157
6.3.3 自定义隐式动画组件 158
6.3.4 TweenAnimationBuilder 160
6.4 小结与心得 161
第7章 手势事件管理与画布 163
7.1 手势事件 163
7.1.1 手势探测器 163
7.1.2 拖曳手势 165
7.1.3 缩放手势 169
7.2 手势探测器 170
7.2.1 手势消歧 171
7.2.2 使用手势识别器 172
7.3 指针事件 174
7.4 自定义画布 176
7.4.1 CustomPaint和CustomPainter 176
7.4.2 Canvas对象 178
7.4.3 Path对象 179
7.5 实战:结合画布与手势实现交互式
画布 180
7.6 实战:画布与动画的结合 183
7.7 小结与心得 186
第8章 路由管理 187
8.1 路由 188
8.1.1 组件路由 188
8.1.2 命名路由 190
8.1.3 弹出路由 193
8.2 路由栈 194
8.2.1 栈顶替换 194
8.2.2 栈顶清除 195
8.2.3 嵌套路由 197
8.3 路由动画 201
8.4 路由数据 203
8.4.1 数据传递 203
8.4.2 数据返回 205
8.5 路由监听器 206
8.6 弹窗路由 208
8.7 小结与心得 211
第9章 状态管理 212
9.1 初探状态 212
9.2 统一管理—InheritedWidget 214
9.2.1 数据仓库 215
9.2.2 子组件注册 218
9.2.3 状态更新 220
9.2.4 ScopeModel 221
9.3 局部更新—BLoC 223
9.3.1 流 223
9.3.2 实现BLoC 225
9.3.3 提供BLoC实例 229
9.4 化繁为简—provider库 232
9.5 小结与心得 235
第10章 数据存储与通信 236
10.1 数据持久化 236
10.1.1 读写文件 237
10.1.2 存储键值对 241
10.1.3 数据库 242
10.2 网络通信 249
10.2.1 http库 250
10.2.2 JSON 252
10.3 小结与心得 258
第11章 应用测试 259
11.1 单元测试 259
11.2 模拟请求 262
11.3 组件测试 264
11.3.1 查找组件 266
11.3.2 模拟用户与组件的交互 267
11.4 驱动测试 270
11.4.1 列表滚动 274
11.4.2 性能跟踪 274
11.5 小结与心得 277
第12章 完整案例 278
12.1 应用数据 279
12.2 主题样式 280
12.3 路由管理 284
12.4 状态管理方案 285
12.5 登录页面 289
12.6 商城首页 294
12.6.1 商城首页的幕布组件 298
12.6.2 商城首页的菜单组件 305
12.6.3 商城首页的商品展示 307
12.6.4 商城首页的购物车 309
12.7 搜索页面 316
12.8 结束语 321
附录A 搭建Flutter开发环境 322
附录B 安装Dart SDK 332
附录C Pub包管理器 335
· · · · · · (
收起)
还没人写过短评呢
还没人写过短评呢