前 言
【第一篇 入门篇】
●第1章 起步 2
1.1 移动开发技术简介 2
1.1.1 原生开发与跨平台技术 2
1.1.2 Hybrid技术简介 3
1.1.3 React Native、Weex及快应用 5
1.1.4 QT Mobile 7
1.1.5 Flutter问世 8
1.1.6 总结 9
1.2 初识Flutter 10
1.2.1 Flutter简介 10
1.2.2 Flutter框架结构 12
1.2.3 如何学习Flutter 13
1.3 搭建Flutter开发环境 14
1.3.1 安装Flutter 14
1.3.2 IDE配置与使用 19
1.3.3 连接设备运行Flutter应用 21
1.3.4 Android Studio常见配置问题 24
1.4 Dart语言简介 26
1.4.1 变量声明 27
1.4.2 函数 28
1.4.3 异步支持 30
1.4.4 Stream 34
1.4.5 Dart与Java及JavaScript的对比 35
●第2章 第一个Flutter应用 36
2.1 计数器应用示例 36
2.1.1 创建Flutter应用模板 36
2.1.2 首页 39
2.2 路由管理 42
2.2.1 一个简单示例 43
2.2.2 MaterialPageRoute 44
2.2.3 Navigator 45
2.2.4 路由传值 45
2.2.5 命名路由 47
2.2.6 路由生成钩子 50
2.2.7 总结 50
2.3 包管理 51
2.4 资源管理 55
2.5 调试Flutter应用 60
2.6 Flutter异常捕获 67
2.6.1 Dart单线程模型 67
2.6.2 异常捕获 69
●第3章 基础组件 73
3.1 Widget简介 73
3.1.1 概念 73
3.1.2 Widget与Element 73
3.1.3 Widget主要接口 74
3.1.4 StatelessWidget 75
3.1.5 StatefulWidget 77
3.1.6 State 78
3.1.7 在Widget树中获取State对象 84
3.1.8 Flutter SDK内置组件库介绍 85
3.2 状态管理 87
3.2.1 Widget管理自身状态 88
3.2.2 父Widget管理子Widget的状态 89
3.2.3 混合状态管理 91
3.2.4 全局状态管理 93
3.3 文本及样式 94
3.3.1 Text 94
3.3.2 TextStyle 95
3.3.3 TextSpan 95
3.3.4 DefaultTextStyle 96
3.3.5 字体 97
3.4 按钮 99
3.4.1 Material组件库中的按钮 99
3.4.2 自定义按钮外观 100
3.5 图片及ICON 102
3.5.1 图片 102
3.5.2 ICON 107
3.6 单选开关和复选框 109
3.6.1 属性及外观 110
3.6.2 总结 110
3.7 输入框及表单 110
3.7.1 TextField 110
3.7.2 Form 118
3.8 进度指示器 122
3.8.1 LinearProgressIndicator 122
3.8.2 CircularProgressIndicator 123
3.8.3 自定义尺寸 124
3.8.4 颜色动画 125
3.8.5 自定义进度指示器样式 126
●第4章 布局类组件 127
4.1 布局类组件简介 127
4.2 线性布局(Row和Column) 128
4.3 弹性布局(Flex) 133
4.4 流式布局 136
4.4.1 Wrap 136
4.4.2 Flow 137
4.5 层叠布局 139
4.6 对齐与相对定位(Align) 141
4.6.1 Align 142
4.6.2 Align与Stack对比 144
4.6.3 Center组件 145
●第5章 容器类组件 146
5.1 填充(Padding) 146
5.2 尺寸限制类容器 147
5.2.1 ConstrainedBox 147
5.2.2 SizedBox 148
5.2.3 多重限制 149
5.2.4 UnconstrainedBox 150
5.2.5 其他尺寸限制类容器 152
5.3 装饰容器(DecoratedBox) 152
5.4 变换(Transform) 153
5.5 Container 156
5.6 Scaffold、AppBar和底部导航 158
5.6.1 Scaffold 158
5.6.2 AppBar 160
5.6.3 抽屉菜单 163
5.6.4 FloatingActionButton 165
5.6.5 底部导航栏 165
5.7 剪裁(Clip) 166
●第6章 可滚动组件 169
6.1 可滚动组件简介 169
6.2 SingleChildScrollView 171
6.3 ListView 172
6.4 GridView 179
6.5 CustomScrollView 184
6.6 滚动监听及控制 187
6.6.1 ScrollController 187
6.6.2 滚动监听 191
●第7章 功能型组件 194
7.1 导航返回拦截(WillPopScope) 194
7.2 数据共享(InheritedWidget) 195
7.3 跨组件状态共享(Provider) 200
7.4 颜色和主题 210
7.4.1 颜色 210
7.4.2 主题 212
7.5 异步UI更新 215
7.5.1 FutureBuilder 216
7.5.2 StreamBuilder 218
7.6 对话框详解 219
7.6.1 使用对话框 219
7.6.2 打开动画及遮罩 224
7.6.3 对话框实现原理 226
7.6.4 对话框状态管理 227
7.6.5 其他类型的对话框 235
【第二篇 进阶篇】
●第8章 事件处理与通知 242
8.1 原始指针事件处理 242
8.2 手势识别 245
8.2.1 GestureDetector 245
8.2.2 GestureRecognizer 249
8.2.3 手势竞争与冲突 251
8.3 事件总线 253
8.4 Notification 255
●第9章 动画 261
9.1 Flutter动画简介 261
9.2 动画基本结构及状态监听 265
9.2.1 动画基本结构 265
9.2.2 动画状态监听 270
9.3 自定义路由切换动画 270
9.4 Hero动画 273
9.5 交织动画 275
9.6 通用切换动画组件 278
9.6.1 AnimatedSwitcher 279
9.6.2 AnimatedSwitcher的高级用法 282
9.7 动画过渡组件 286
9.7.1 自定义动画过渡组件 286
9.7.2 Flutter预置的动画过渡组件 293
●第10章 自定义组件 297
10.1 自定义组件方法简介 297
10.2 组合现有组件 298
10.3 组合实例:TurnBox 301
10.4 自绘组件(CustomPaint与Canvas) 305
10.5 自绘实例:圆形背景渐变进度条 309
●第11章 文件操作与网络请求 318
11.1 文件操作 318
11.2 通过HttpClient发起HTTP请求 320
11.3 dio HTTP请求库 327
11.4 示例:HTTP分块下载 329
11.5 使用WebSockets 334
11.6 使用Socket API 338
11.7 JSON转Dart Model类 338
●第12章 包与插件 348
12.1 开发Package 348
12.2 插件开发:平台通道简介 352
12.3 开发Flutter插件 355
12.4 插件开发:Android端API实现 357
12.5 插件开发:iOS端API实现 360
12.6 Texture和PlatformView 364
12.6.1 Texture(示例:使用摄像头) 364
12.6.2 PlatformView(示例:WebView) 373
●第13章 国际化 375
13.1 让APP支持多语言 375
13.2 实现Localizations 379
13.3 使用Intl包 381
13.4 国际化中的常见问题 386
●第14章 Flutter核心原理 388
14.1 Flutter UI系统 388
14.2 Element与BuildContext 390
14.2.1 Element 390
14.2.2 BuildContext 391
14.3 RenderObject和RenderBox 395
14.3.1 布局过程 395
14.3.2 绘制过程 398
14.3.3 命中测试 401
14.3.4 语义化 402
14.3.5 总结 403
14.4 Flutter运行机制:从启动到显示 403
14.5 图片加载原理与缓存 410
14.5.1 ImageProvider 410
14.5.2 Image组件原理 418
【第三篇 实例篇】
●第15章 一个完整的Flutter应用 422
15.1 GitHub客户端示例 422
15.2 Flutter APP代码结构 423
15.3 Model类定义 424
15.4 全局变量及共享状态 427
15.4.1 全局变量:Global类 427
15.4.2 共享状态 428
15.5 网络请求封装 430
15.5.1 网络接口缓存 430
15.5.2 封装网络请求 433
15.6 APP入口及主页 435
15.6.1 APP入口 435
15.6.2 主页 437
15.6.3 抽屉菜单 443
15.7 登录页 446
15.8 多语言和多主题 449
15.8.1 语言选择页 449
15.8.2 主题选择页 451
参考文献 452
· · · · · · (
收起)