Flutter从0基础到App上线
目 录
第1章 Flutter简介 1
1.1 移动App开发的前世今生 2
1.2 为什么选择Flutter 3
1.2.1 Flutter的优势 3
1.2.2 Flutter强大的跨平台特性 4
1.2.3 Flutter的明天 5
1.3 Flutter的体系结构 6
第2章 初次遇见Flutter 8
2.1 开发环境搭建 8
查看完整
第1章 Flutter简介 1
1.1 移动App开发的前世今生 2
1.2 为什么选择Flutter 3
1.2.1 Flutter的优势 3
1.2.2 Flutter强大的跨平台特性 4
1.2.3 Flutter的明天 5
1.3 Flutter的体系结构 6
第2章 初次遇见Flutter 8
2.1 开发环境搭建 8
查看完整
萧文翰,Android架构师/技术顾问。从2013年开始从事移动前端开发工作,主攻Android和跨平台开发技术,具有丰富的实战项目经验。萧文翰是国内7项专利的共同发明人,从2017年年底至2019年年底,在担任天津/广州三星通信研究院代码优化工程师期间,6次当选Best Technical-Report,曾推动App性能优化活动,实现性能类别解决方案同比增长60%,总体解决方案领先于全球研究院。他还是CSDN博客专家&认证讲师、知乎专栏作家。
本书采用实践为主,理论为辅,二者相结合的方式,阐述了Dart编程语言的基础和高级用法,以及Flutter 框架的开发。图文并茂,通俗易懂。从*基础的编程语言语法开始,逐步实现从0到1,开发出一款App的目标。无论是想要入门跨平台开发的朋友,还是有一定编程基础的开发者,都能从本书获益。为读者带来充满轻松与喜乐的学习体验。
目 录
第1章 Flutter简介 1
1.1 移动App开发的前世今生 2
1.2 为什么选择Flutter 3
1.2.1 Flutter的优势 3
1.2.2 Flutter强大的跨平台特性 4
1.2.3 Flutter的明天 5
1.3 Flutter的体系结构 6
第2章 初次遇见Flutter 8
2.1 开发环境搭建 8
2.1.1 下载JDK 9
2.1.2 安装JDK 9
2.1.3 安装和配置Xcode 10
2.1.4 下载Flutter SDK 11
2.1.5 配置Flutter SDK 11
2.1.6 配置组件 12
2.2 集成开发环境的选择 12
2.2.1 配置Android Studio 13
2.2.2 配置Visual Studio Code 17
2.3 个程序——Hello World 18
2.3.1 运行自诊断脚本 18
2.3.2 启动Android模拟器 19
2.3.3 将项目运行在模拟器上 21
2.3.4 探索Flutter热修复特性 22
2.4 升级Flutter 23
2.5 练习 24
第3章 Dart语言基础 25
3.1 Dart语言简介 25
3.1.1 Dart发展史 25
3.1.2 Dart重要概念 26
3.1.3 Hello Dart 27
3.2 变量与常量 29
3.2.1 变量 29
3.2.2 常量 30
3.3 基本数据类型 31
3.3.1 数值型 31
3.3.2 字符串 32
3.3.3 布尔 34
3.3.4 集合 34
3.3.5 UTF-32编码表示法 39
3.4 方法 39
3.4.1 定义一个方法 39
3.4.2 参数 40
3.4.3 主方法 42
3.4.4 作用域 42
3.4.5 闭包 42
3.4.6 检查两个方法是否相等 43
3.4.7 返回值 43
3.5 运算符 43
3.5.1 算术运算符 45
3.5.2 关系运算符 46
3.5.3 类型判定运算符 47
3.5.4 赋值运算符 48
3.5.5 逻辑运算符 49
3.5.6 位操作运算符 50
3.5.7 条件表达式 51
3.5.8 级联运算符 52
3.5.9 其他运算符 52
3.6 流程控制 52
3.6.1 if-else条件语句 53
3.6.2 for循环 53
3.6.3 while循环和do-while循环 54
3.6.4 break语句和continue语句 55
3.6.5 switch-case条件语句 56
3.6.6 断言 58
3.7 异常 59
3.7.1 Throw 59
3.7.2 Catch 60
3.7.3 Finally 62
3.8 练习 62
第4章 Dart语言的面向对象应用 63
4.1 类 63
4.1.1 类的实例化 63
4.1.2 实例变量 65
4.1.3 getter()方法和setter()方法 66
4.1.4 静态变量 67
4.1.5 构造方法 67
4.1.6 实例方法 73
4.1.7 静态方法 73
4.1.8 扩展类 74
4.1.9 可复写的运算符 77
4.1.10 抽象方法 78
4.1.11 抽象类 80
4.1.12 接口 80
4.1.13 利用Mixin特性扩展类 82
4.1.14 枚举 83
4.2 泛型 84
4.2.1 泛型的作用 84
4.2.2 泛型的使用示例 85
4.2.3 限制泛型类型范围 85
4.2.4 使用泛型方法 86
4.3 练习 87
第5章 Dart语言的高级使用技巧 88
5.1 库 88
5.1.1 使用库 89
5.1.2 创建库 91
5.2 异步处理 91
5.2.1 声明异步的方法 92
5.2.2 使用await表达式 93
5.2.3 异步在循环中的使用 93
5.3 可调用的类 93
5.4 Dart的isolates运行模式 94
5.5 方法类型定义 94
5.6 元数据 96
5.7 注释 96
5.7.1 单行注释 96
5.7.2 多行注释 97
5.7.3 文档注释 97
5.8 编写更有效的Dart代码 97
5.9 练习 98
第6章 绘制赏心悦目的界面 99
6.1 个Flutter项目 99
6.1.1 Flutter项目的结构 100
6.1.2 日志工具的使用 100
6.2 Flutter基础 101
6.2.1 Flutter框架结构 101
6.2.2 App启动入口 101
6.2.3 一切皆为组件 102
6.2.4 组件的组合运用 102
6.2.5 何为状态 103
6.2.6 自定义组件 114
6.3 基本组件 120
6.3.1 基本组件简介 120
6.3.2 文本组件 120
6.3.3 按钮组件 124
6.3.4 图片组件 126
6.3.5 开关和复选框组件 129
6.3.6 单选框组件 130
6.3.7 输入框组件和表单组件 131
6.4 多元素布局组件 147
6.4.1 布局类组件 147
6.4.2 线性布局 149
6.4.3 堆叠布局 152
6.4.4 弹性布局 155
6.4.5 流式布局 156
6.5 容器类组件 159
6.5.1 内边距 159
6.5.2 约束 160
6.5.3 装饰 161
6.5.4 变换 164
6.5.5 容器 165
6.6 滚动列表组件 166
6.6.1 滚动列表组件简介 166
6.6.2 单个子组件的滚动视图 166
6.6.3 线性列表组件 168
6.6.4 网格列表组件 174
6.6.5 自定义滚动组件 177
6.6.6 滚动的控制及实时状态监听 178
6.7 其他重要的组件 181
6.7.1 拦截返回键 181
6.7.2 在组件树之间共享数据 183
6.7.3 触摸事件监听 186
6.7.4 手势识别 188
6.7.5 通知组件 190
6.7.6 全局事件广播 193
6.8 App资源管理 196
6.8.1 放置资源 196
6.8.2 使用资源 197
6.8.3 跨平台使用共享资源 197
6.9 动画 200
6.9.1 基本概念 200
6.9.2 补间动画 200
6.9.3 物理模拟动画 202
6.9.4 非线性动画 202
6.9.5 共享元素过渡动画 203
6.9.6 多个动画的叠加 206
6.10 字体 210
6.10.1 放置字体 210
6.10.2 使用字体 211
6.11 主题 211
6.11.1 使用主题 211
6.11.2 全局主题 212
6.11.3 局部主题 212
6.11.4 扩展现有主题 213
6.12 练习 213
第7章 数据的传递和持久化保存 214
7.1 页面跳转 214
7.1.1 页面的跳转和返回 214
7.1.2 数据的传递和返回 216
7.2 本地文件 221
7.2.1 本地文件的路径 222
7.2.2 本地文件的读写 222
7.3 网络请求 225
7.3.1 发起HTTP请求 226
7.3.2 Json解析 228
7.4 保存用户设置 239
7.5 数据库操作 240
7.6 练习 248
第8章 使用设备硬件实现更多功能 249
8.1 GPS定位技术 249
8.2 相机 252
8.3 蓝牙 254
8.4 音视频 259
8.4.1 音频录放 259
8.4.2 视频录放 262
8.5 距离传感器 263
8.6 NFC近场通信 265
8.7 练习 269
第9章 使App更加通用——国际化的实现 270
9.1 识别当前系统的语言 270
9.2 使App支持多语言环境 272
9.3 练习 276
第10章 与原生代码交互 277
10.1 平台通道 277
10.1.1 平台通道的概念 278
10.1.2 平台通道支持的数据类型和解码器 278
10.2 与Android原生代码交互 279
10.2.1 使用Java语言实现 283
10.2.2 使用Kotlin语言实现 285
10.3 与iOS原生代码交互 287
10.3.1 使用Objective-C语言实现 287
10.3.2 使用Swift语言实现 289
10.4 练习 290
第11章 Material Design(Android)风格设计 291
11.1 脚手架组件 291
11.2 顶部程序栏组件 294
11.3 水平选项卡与内容视图组件 296
11.4 底部导航栏组件 298
11.5 抽屉组件 300
11.6 浮动悬停按钮组件 302
11.7 扁平按钮组件 303
11.8 图标按钮组件 303
11.9 浮动动作按钮组件 305
11.10 弹出式菜单组件 305
11.11 滑块组件 307
11.12 日期时间选择组件 309
11.13 简单对话框 312
11.14 提示框 314
11.15 可展开的列表组件 315
11.16 底部提示组件 317
11.17 标签组件 318
11.18 帮助提示组件 320
11.19 卡片组件 320
11.20 水平和圆形进度组件 322
11.21 练习 323
第12章 Cupertino(iOS)风格设计 324
12.1 脚手架组件 324
12.2 顶部导航栏组件 326
12.3 底部导航栏组件 329
12.4 操作表单组件 332
12.5 动作指示器组件 335
12.6 提示框组件 336
12.7 按钮组件 338
12.8 时间日期选择组件 340
12.9 时间选择组件 341
12.10 选择器组件 342
12.11 滑块组件 344
12.12 练习 345
第13章 实战演练:头条新闻 346
13.1 功能需求和技术可行性分析 346
13.1.1 功能需求分析 347
13.1.2 技术可行性分析 347
13.2 绘制产品原型图 349
13.3 将代码托管到Git 350
13.3.1 注册GitHub账号 351
13.3.2 新建代码仓库 351
13.3.3 代码仓库的克隆 353
13.3.4 代码的提交 354
13.4 数据的获取和解析 355
13.4.1 HTTP请求和返回处理 355
13.4.2 Json解析 356
13.4.3 定义新闻频道列表 358
13.5 绘制界面 359
13.5.1 构建和绘制新闻标题列表 359
13.5.2 跳转查看新闻详情 363
13.6 进一步:还可以做些什么 370
第14章 测试与调试应用 371
14.1 测试概述 371
14.2 单元测试 372
14.2.1 添加测试库 372
14.2.2 创建测试类和被测试类 372
14.2.3 开发业务逻辑 373
14.2.4 开发测试类 373
14.2.5 运行测试类 374
14.3 组件测试 374
14.3.1 添加测试库 374
14.3.2 创建要被测试的组件 375
14.3.3 创建组件测试类 375
14.3.4 使用WidgetTester创建组件 375
14.3.5 使用find查找组件 375
14.3.6 使用Matcher验证结果 376
14.4 集成测试 377
14.4.1 创建要测试的App 378
14.4.2 添加必要的测试库 379
14.4.3 创建测试类 380
14.4.4 构建指令化的Flutter应用程序类 380
14.4.5 构建集成测试用到的类 381
14.4.6 运行测试 382
14.5 Dart分析器 382
14.6 Dart单步调试法 383
14.7 调试应用程序的层 386
14.7.1 组件层 386
14.7.2 渲染层 389
14.7.3 转储层级关系 391
14.7.4
^ 收 起
第1章 Flutter简介 1
1.1 移动App开发的前世今生 2
1.2 为什么选择Flutter 3
1.2.1 Flutter的优势 3
1.2.2 Flutter强大的跨平台特性 4
1.2.3 Flutter的明天 5
1.3 Flutter的体系结构 6
第2章 初次遇见Flutter 8
2.1 开发环境搭建 8
2.1.1 下载JDK 9
2.1.2 安装JDK 9
2.1.3 安装和配置Xcode 10
2.1.4 下载Flutter SDK 11
2.1.5 配置Flutter SDK 11
2.1.6 配置组件 12
2.2 集成开发环境的选择 12
2.2.1 配置Android Studio 13
2.2.2 配置Visual Studio Code 17
2.3 个程序——Hello World 18
2.3.1 运行自诊断脚本 18
2.3.2 启动Android模拟器 19
2.3.3 将项目运行在模拟器上 21
2.3.4 探索Flutter热修复特性 22
2.4 升级Flutter 23
2.5 练习 24
第3章 Dart语言基础 25
3.1 Dart语言简介 25
3.1.1 Dart发展史 25
3.1.2 Dart重要概念 26
3.1.3 Hello Dart 27
3.2 变量与常量 29
3.2.1 变量 29
3.2.2 常量 30
3.3 基本数据类型 31
3.3.1 数值型 31
3.3.2 字符串 32
3.3.3 布尔 34
3.3.4 集合 34
3.3.5 UTF-32编码表示法 39
3.4 方法 39
3.4.1 定义一个方法 39
3.4.2 参数 40
3.4.3 主方法 42
3.4.4 作用域 42
3.4.5 闭包 42
3.4.6 检查两个方法是否相等 43
3.4.7 返回值 43
3.5 运算符 43
3.5.1 算术运算符 45
3.5.2 关系运算符 46
3.5.3 类型判定运算符 47
3.5.4 赋值运算符 48
3.5.5 逻辑运算符 49
3.5.6 位操作运算符 50
3.5.7 条件表达式 51
3.5.8 级联运算符 52
3.5.9 其他运算符 52
3.6 流程控制 52
3.6.1 if-else条件语句 53
3.6.2 for循环 53
3.6.3 while循环和do-while循环 54
3.6.4 break语句和continue语句 55
3.6.5 switch-case条件语句 56
3.6.6 断言 58
3.7 异常 59
3.7.1 Throw 59
3.7.2 Catch 60
3.7.3 Finally 62
3.8 练习 62
第4章 Dart语言的面向对象应用 63
4.1 类 63
4.1.1 类的实例化 63
4.1.2 实例变量 65
4.1.3 getter()方法和setter()方法 66
4.1.4 静态变量 67
4.1.5 构造方法 67
4.1.6 实例方法 73
4.1.7 静态方法 73
4.1.8 扩展类 74
4.1.9 可复写的运算符 77
4.1.10 抽象方法 78
4.1.11 抽象类 80
4.1.12 接口 80
4.1.13 利用Mixin特性扩展类 82
4.1.14 枚举 83
4.2 泛型 84
4.2.1 泛型的作用 84
4.2.2 泛型的使用示例 85
4.2.3 限制泛型类型范围 85
4.2.4 使用泛型方法 86
4.3 练习 87
第5章 Dart语言的高级使用技巧 88
5.1 库 88
5.1.1 使用库 89
5.1.2 创建库 91
5.2 异步处理 91
5.2.1 声明异步的方法 92
5.2.2 使用await表达式 93
5.2.3 异步在循环中的使用 93
5.3 可调用的类 93
5.4 Dart的isolates运行模式 94
5.5 方法类型定义 94
5.6 元数据 96
5.7 注释 96
5.7.1 单行注释 96
5.7.2 多行注释 97
5.7.3 文档注释 97
5.8 编写更有效的Dart代码 97
5.9 练习 98
第6章 绘制赏心悦目的界面 99
6.1 个Flutter项目 99
6.1.1 Flutter项目的结构 100
6.1.2 日志工具的使用 100
6.2 Flutter基础 101
6.2.1 Flutter框架结构 101
6.2.2 App启动入口 101
6.2.3 一切皆为组件 102
6.2.4 组件的组合运用 102
6.2.5 何为状态 103
6.2.6 自定义组件 114
6.3 基本组件 120
6.3.1 基本组件简介 120
6.3.2 文本组件 120
6.3.3 按钮组件 124
6.3.4 图片组件 126
6.3.5 开关和复选框组件 129
6.3.6 单选框组件 130
6.3.7 输入框组件和表单组件 131
6.4 多元素布局组件 147
6.4.1 布局类组件 147
6.4.2 线性布局 149
6.4.3 堆叠布局 152
6.4.4 弹性布局 155
6.4.5 流式布局 156
6.5 容器类组件 159
6.5.1 内边距 159
6.5.2 约束 160
6.5.3 装饰 161
6.5.4 变换 164
6.5.5 容器 165
6.6 滚动列表组件 166
6.6.1 滚动列表组件简介 166
6.6.2 单个子组件的滚动视图 166
6.6.3 线性列表组件 168
6.6.4 网格列表组件 174
6.6.5 自定义滚动组件 177
6.6.6 滚动的控制及实时状态监听 178
6.7 其他重要的组件 181
6.7.1 拦截返回键 181
6.7.2 在组件树之间共享数据 183
6.7.3 触摸事件监听 186
6.7.4 手势识别 188
6.7.5 通知组件 190
6.7.6 全局事件广播 193
6.8 App资源管理 196
6.8.1 放置资源 196
6.8.2 使用资源 197
6.8.3 跨平台使用共享资源 197
6.9 动画 200
6.9.1 基本概念 200
6.9.2 补间动画 200
6.9.3 物理模拟动画 202
6.9.4 非线性动画 202
6.9.5 共享元素过渡动画 203
6.9.6 多个动画的叠加 206
6.10 字体 210
6.10.1 放置字体 210
6.10.2 使用字体 211
6.11 主题 211
6.11.1 使用主题 211
6.11.2 全局主题 212
6.11.3 局部主题 212
6.11.4 扩展现有主题 213
6.12 练习 213
第7章 数据的传递和持久化保存 214
7.1 页面跳转 214
7.1.1 页面的跳转和返回 214
7.1.2 数据的传递和返回 216
7.2 本地文件 221
7.2.1 本地文件的路径 222
7.2.2 本地文件的读写 222
7.3 网络请求 225
7.3.1 发起HTTP请求 226
7.3.2 Json解析 228
7.4 保存用户设置 239
7.5 数据库操作 240
7.6 练习 248
第8章 使用设备硬件实现更多功能 249
8.1 GPS定位技术 249
8.2 相机 252
8.3 蓝牙 254
8.4 音视频 259
8.4.1 音频录放 259
8.4.2 视频录放 262
8.5 距离传感器 263
8.6 NFC近场通信 265
8.7 练习 269
第9章 使App更加通用——国际化的实现 270
9.1 识别当前系统的语言 270
9.2 使App支持多语言环境 272
9.3 练习 276
第10章 与原生代码交互 277
10.1 平台通道 277
10.1.1 平台通道的概念 278
10.1.2 平台通道支持的数据类型和解码器 278
10.2 与Android原生代码交互 279
10.2.1 使用Java语言实现 283
10.2.2 使用Kotlin语言实现 285
10.3 与iOS原生代码交互 287
10.3.1 使用Objective-C语言实现 287
10.3.2 使用Swift语言实现 289
10.4 练习 290
第11章 Material Design(Android)风格设计 291
11.1 脚手架组件 291
11.2 顶部程序栏组件 294
11.3 水平选项卡与内容视图组件 296
11.4 底部导航栏组件 298
11.5 抽屉组件 300
11.6 浮动悬停按钮组件 302
11.7 扁平按钮组件 303
11.8 图标按钮组件 303
11.9 浮动动作按钮组件 305
11.10 弹出式菜单组件 305
11.11 滑块组件 307
11.12 日期时间选择组件 309
11.13 简单对话框 312
11.14 提示框 314
11.15 可展开的列表组件 315
11.16 底部提示组件 317
11.17 标签组件 318
11.18 帮助提示组件 320
11.19 卡片组件 320
11.20 水平和圆形进度组件 322
11.21 练习 323
第12章 Cupertino(iOS)风格设计 324
12.1 脚手架组件 324
12.2 顶部导航栏组件 326
12.3 底部导航栏组件 329
12.4 操作表单组件 332
12.5 动作指示器组件 335
12.6 提示框组件 336
12.7 按钮组件 338
12.8 时间日期选择组件 340
12.9 时间选择组件 341
12.10 选择器组件 342
12.11 滑块组件 344
12.12 练习 345
第13章 实战演练:头条新闻 346
13.1 功能需求和技术可行性分析 346
13.1.1 功能需求分析 347
13.1.2 技术可行性分析 347
13.2 绘制产品原型图 349
13.3 将代码托管到Git 350
13.3.1 注册GitHub账号 351
13.3.2 新建代码仓库 351
13.3.3 代码仓库的克隆 353
13.3.4 代码的提交 354
13.4 数据的获取和解析 355
13.4.1 HTTP请求和返回处理 355
13.4.2 Json解析 356
13.4.3 定义新闻频道列表 358
13.5 绘制界面 359
13.5.1 构建和绘制新闻标题列表 359
13.5.2 跳转查看新闻详情 363
13.6 进一步:还可以做些什么 370
第14章 测试与调试应用 371
14.1 测试概述 371
14.2 单元测试 372
14.2.1 添加测试库 372
14.2.2 创建测试类和被测试类 372
14.2.3 开发业务逻辑 373
14.2.4 开发测试类 373
14.2.5 运行测试类 374
14.3 组件测试 374
14.3.1 添加测试库 374
14.3.2 创建要被测试的组件 375
14.3.3 创建组件测试类 375
14.3.4 使用WidgetTester创建组件 375
14.3.5 使用find查找组件 375
14.3.6 使用Matcher验证结果 376
14.4 集成测试 377
14.4.1 创建要测试的App 378
14.4.2 添加必要的测试库 379
14.4.3 创建测试类 380
14.4.4 构建指令化的Flutter应用程序类 380
14.4.5 构建集成测试用到的类 381
14.4.6 运行测试 382
14.5 Dart分析器 382
14.6 Dart单步调试法 383
14.7 调试应用程序的层 386
14.7.1 组件层 386
14.7.2 渲染层 389
14.7.3 转储层级关系 391
14.7.4
^ 收 起
萧文翰,Android架构师/技术顾问。从2013年开始从事移动前端开发工作,主攻Android和跨平台开发技术,具有丰富的实战项目经验。萧文翰是国内7项专利的共同发明人,从2017年年底至2019年年底,在担任天津/广州三星通信研究院代码优化工程师期间,6次当选Best Technical-Report,曾推动App性能优化活动,实现性能类别解决方案同比增长60%,总体解决方案领先于全球研究院。他还是CSDN博客专家&认证讲师、知乎专栏作家。
本书采用实践为主,理论为辅,二者相结合的方式,阐述了Dart编程语言的基础和高级用法,以及Flutter 框架的开发。图文并茂,通俗易懂。从*基础的编程语言语法开始,逐步实现从0到1,开发出一款App的目标。无论是想要入门跨平台开发的朋友,还是有一定编程基础的开发者,都能从本书获益。为读者带来充满轻松与喜乐的学习体验。
比价列表