新書推薦:
《
分析性一体的涌现:进入精神分析的核心
》
售價:NT$
556.0
《
火枪与账簿:早期经济全球化时代的中国与东亚世界
》
售價:NT$
352.0
《
《全面与进步跨太平洋伙伴关系协定》国有企业条款研究
》
售價:NT$
449.0
《
银行业架构网络BIAN(全球数字化时代金融服务业框架)(数字化转型与创新管理丛书)
》
售價:NT$
449.0
《
金托邦:江湖中的沉重正义
》
售價:NT$
275.0
《
易经今解:释疑·解惑·见微
》
售價:NT$
403.0
《
东欧史(全二册)-“中间地带”的困境
》
售價:NT$
1010.0
《
虚拟资本:金融怎样挪用我们的未来
》
售價:NT$
352.0
|
編輯推薦: |
1.作者曾担任CSDN知识库编辑,撰写了大量移动开发技术文章。
2.本书系统讲解使用Flutter进行跨平台开发应具备的知识。
3.理论实践相结合,包含丰富的代码示例与效果图片,组件功能一目了然。
4.包含两个完整APP实战项目,帮助读者快速上手实际的项目开发工作。
5.提供配套源代码下载,方便读者复现本书代码效果,感受Flutter App开发的魅力。
|
內容簡介: |
Flutter是谷歌公司推出的跨平台开源UI框架,同时支持Android App与iOS App开发,使用这一框架可以大大提高开发效率。本书共14章,系统讲解Flutter背景、Dart语言的语法基础、Flutter组件、状态管理、事件处理、路由管理、动画、网络编程、数据存储、相机、主题与国际化、混合开发等核心内容,并通过多个案例以及“天气预报”App和“我的视频”App两个完整的实战项目,将理论知识与实践结合,提升读者的实战开发能力。通过对本书的学习,读者将会对Flutter框架以及跨平台开发有全面的认识,并可在实践中使用Flutter大大提高移动开发效率。
本书适合正在使用Flutter以及对Flutter感兴趣的开发人员阅读和参考。
|
關於作者: |
李元静,移动开发工程师,目前就职于某互联网金融公司,主导跨平台混合项目开发和兼容性测试工作。他担任过CSDN知识库编辑,拥有多年移动开发经验,对Android App开发、iOS App开发以及跨平台开发有丰富的研究和应用经验。他热衷于技术的传播与分享,撰写了大量关于移动开发的技术文章,文章阅读量超过140万次。
|
目錄:
|
第 1章 初识Flutter 1
1.1 Flutter简介 1
1.2 Flutter的优势 1
1.2.1 跨平台性 2
1.2.2 高帧率的流畅UI 2
1.2.3 热重载 2
1.2.4 对开发环境要求不高 2
1.2.5 高性能 2
1.2.6 学习成本低 3
1.3 Flutter的技术特性 3
1.4 Flutter的架构 3
1.4.1 Flutter框架 3
1.4.2 Flutter引擎 4
1.5 开发环境的搭建 4
1.5.1 安装Android Studio 5
1.5.2 在Android Studio中安装Flutter开发库 5
1.5.3 在VSCode中安装Flutter开发库 8
1.5.4 搭建Dart语言开发环境 9
1.5.5 通过IntelliJ IDEA搭建纯Dart语言开发环境 10
1.6 创建第 一个Flutter项目 11
1.7 体验热重载 13
1.8 习题 14
第 2章 Dart语言:一切皆对象 15
2.1 Dart语言简介 15
2.1.1 一切皆对象 15
2.1.2 面向接口编程 15
2.1.3 类型可选 16
2.2 Hello World 16
2.3 变量与常量 17
2.3.1 变量 17
2.3.2 常量 17
2.4 内置类型 18
2.4.1 数值类型 18
2.4.2 布尔类型 19
2.4.3 字符串类型 20
2.4.4 列表类型 21
2.4.5 键值对类型 23
2.4.6 动态类型与Object 23
2.4.7 符号字符 24
2.4.8 符号 25
2.5 运算符 25
2.5.1 三目运算符 25
2.5.2 取商运算符 26
2.5.3 自定义类操作符 26
2.5.4 级联操作符 27
2.6 get和set方法 27
2.7 异常捕获 28
2.7.1 throw 28
2.7.2 try-catch 28
2.8 循环语句 29
2.8.1 for循环 29
2.8.2 while循环 30
2.8.3 do-while循环 30
2.9 switch语句 30
2.10 函数 31
2.10.1 main()函数 31
2.10.2 可选参数 31
2.10.3 必选参数 31
2.10.4 可选位置参数 32
2.10.5 默认参数 32
2.10.6 函数作为参数传递 32
2.10.7 函数作为变量 33
2.10.8 级联 33
2.11 异步编程 34
2.11.1 Future 34
2.11.2 async和await 35
2.12 抽象方法和抽象类 36
2.13 接口 37
2.14 继承 37
2.15 mixin 38
2.16 泛型 40
2.17 库 42
2.17.1 导入库 42
2.17.2 拆分库 43
2.18 习题 43
第3章 Flutter组件 45
3.1 基础组件 45
3.1.1 Text 46
3.1.2 Button 47
3.1.3 Icon 49
3.1.4 Image 49
3.1.5 FlutterLogo 51
3.2 单一子元素组件 51
3.2.1 Container 51
3.2.2 Padding 54
3.2.3 Align 55
3.2.4 Center 55
3.2.5 FittedBox 55
3.2.6 AspectRatio 57
3.2.7 SingleChildScrollView 57
3.2.8 FractionallySizedBox 58
3.2.9 ConstrainedBox 58
3.2.10 Baseline 59
3.3 多子元素组件 60
3.3.1 Scaffold 60
3.3.2 AppBar 61
3.3.3 Row和Column 62
3.3.4 ListView 63
3.3.5 GridView 66
3.3.6 CustomScrollView 67
3.3.7 CustomMultiChildLayout 68
3.3.8 Stack 69
3.3.9 IndexedStack 70
3.3.10 Table 70
3.3.11 Flex 71
3.3.12 Wrap 72
3.3.13 Flow 73
3.4 其他常用组件的应用 75
3.4.1 TextField 75
3.4.2 TextFormField 77
3.4.3 侧滑菜单 79
3.4.4 轮播广告 81
3.4.5 折叠相册 82
3.5 习题 85
第4章 状态管理 86
4.1 状态管理组件 86
4.1.1 Widget树 86
4.1.2 Context树 87
4.1.3 StatelessWidget 87
4.1.4 StatefulWidget 88
4.2 State 89
4.3 Key 94
4.3.1 GlobalKey 94
4.3.2 LocalKey 95
4.4 InheritedWidget 99
4.5 包管理 102
4.6 习题 103
第5章 事件处理 104
5.1 原始指针事件 104
5.1.1 基本用法 104
5.1.2 忽略PointerEvent 106
5.1.3 命中测试 107
5.2 GestureDetector 109
5.2.1 基本用法 109
5.2.2 常用事件 110
5.2.3 GestureDetector实战 111
5.2.4 手势冲突 113
5.3 事件通知 115
5.3.1 通知冒泡 115
5.3.2 通知栏消息 117
5.3.3 通知数提醒 118
5.4 习题 119
第6章 路由管理 120
6.1 路由简介 120
6.1.1 基本用法 120
6.1.2 静态路由 121
6.1.3 动态路由 123
6.1.4 参数回传 125
6.2 路由栈 128
6.2.1 路由栈详解 128
6.2.2 pushReplacementNamed()方法 128
6.2.3 popAndPushNamed()与pushReplacement()方法 129
6.2.4 pushNamedAndRemoveUntil()方法 129
6.2.5 popUntil()方法 131
6.3 fluro库 131
6.3.1 创建路由管理类 131
6.3.2 实现路由跳转 133
6.4 习题 135
第7章 动画 136
7.1 动画的原理 136
7.1.1 帧 136
7.1.2 插值器 137
7.2 Flutter动画核心类 138
7.2.1 Animation 138
7.2.2 Animatable 138
7.2.3 AnimationController 138
7.3 Tween类 140
7.3.1 Tween.animate 142
7.3.2 Curve 142
7.4 动画的封装与简化 145
7.4.1 AnimatedWidget 145
7.4.2 AnimatedBuilder 146
7.4.3 ScaleTransition 148
7.5 路由动画 149
7.5.1 Hero 150
7.5.2 Hero动画原理 151
7.5.3 自定义路由动画 153
7.6 组合动画 156
7.7 动画实战 160
7.7.1 实现支付宝“咻一咻”
动画 160
7.7.2 Flare动画 164
7.8 习题 167
第8章 网络编程 168
8.1 网络协议基础 168
8.1.1 HTTP 168
8.1.2 URL和URI 171
8.1.3 Get和Post 172
8.1.4 为什么普及HTTP 2.0 172
8.1.5 HTTPS 174
8.2 网络编程 175
8.2.1 HttpClient库 175
8.2.2 http库 177
8.3 JSON解析 179
8.3.1 手动解析JSON数据 179
8.3.2 手动将JSON数据显示到界面 180
8.3.3 自动解析 182
8.4 dio库 186
8.4.1 基本用法 186
8.4.2 单例模式 188
8.4.3 拦截器 189
8.4.4 适配器 192
8.5 异步编程 193
8.5.1 隔离 193
8.5.2 事件循环 194
8.5.3 线程模型 196
8.5.4 事件流 198
8.5.5 创建并使用隔离 200
8.5.6 使用compute()函数 202
8.5.7 FutureBuilder 202
8.6 网络状态判断 204
8.7 习题 207
第9章 数据存储 208
9.1 SharedPreferences 208
9.1.1 基本操作 208
9.1.2 实现登录账号存储功能 209
9.2 文件存储 212
9.2.1 基本操作 213
9.2.2 实现留言板功能 214
9.2.3 自定义外部存储目录路径 216
9.2.4 实现文件浏览器功能 218
9.2.5 实现文件夹的添加和删除功能 220
9.3 SQLite数据库 223
9.3.1 基本操作 224
9.3.2 封装数据库操作 230
9.3.3 用sqflite库实现添加客户信息功能 233
9.4 访问服务器端数据库 237
9.4.1 基本操作 237
9.4.2 访问云端数据库实战 239
9.5 习题 241
第 10章 相机 242
10.1 camera库 242
10.1.1 基本用法 242
10.1.2 使用takePicture ()方法拍照 245
10.1.3 切换摄像头 248
10.1.4 录制视频 249
10.2 视频播放 251
10.2.1 本地视频播放 252
10.2.2 网络视频播放 254
10.2.3 视频资源播放 256
10.2.4 视频样式 258
10.3 浏览图片和视频 262
10.3.1 调用相机拍摄图片 263
10.3.2 调用相机拍摄视频 265
10.3.3 选择图片与视频 268
10.3.4 完善自定义相机 269
10.4 下载图片和视频 273
10.5 识别二维码和条形码 274
10.6 生成二维码 278
10.6.1 qr_flutter库的基本用法 278
10.6.2 实现二维码生成器 279
10.7 习题 280
第 11章 主题与国际化 281
11.1 主题换肤 281
11.1.1 ThemeData组件的属性 281
11.1.2 全局主题应用 282
11.1.3 局部主题应用 284
11.1.4 主题换肤实战 285
11.2 第三方库换肤 286
11.2.1 状态管理配置 287
11.2.2 变更主题样式 288
11.2.3 第三方库换肤实战 289
11.3 国际化 292
11.3.1 自定义LocalizationsDelegate类 294
11.3.2 通过MyLocalizations类
国际化 296
11.4 第三方库easy_localization 299
11.4.1 初始化配置 300
11.4.2 手动切换语言实战 301
11.5 习题 303
第 12章 混合开发 304
12.1 在Android原生项目中嵌入Flutter技术 304
12.1.1 创建Flutter模块 304
12.1.2 关联Flutter模块 304
12.2 Flutter与Android交互 305
12.2.1 Activity嵌入Flutter界面 306
12.2.2 Flutter向Activity传递参数 308
12.2.3 Activity向Flutter回传参数 310
12.2.4 Flutter向Activity回传参数 312
12.2.5 Flutter与Fragment 313
12.3 FlutterBoost框架 315
12.3.1 FlutterBoost架构 315
12.3.2 配置FlutterBoost框架的开发环境 316
12.3.3 使用FlutterBoost框架进行混合开发 317
12.4 aar模块化打包 322
12.5 习题 323
第 13章 实战项目1:“天气预报”App 324
13.1 需求分析及技术获取 324
13.1.1 获取定位信息 324
13.1.2 获取天气数据 326
13.1.3 项目使用的库 326
13.1.4 项目目录结构 328
13.2 业务功能开发 328
13.2.1 获取当前城市名称 328
13.2.2 获取天气数据 329
13.2.3 存储天气数据 332
13.3 主界面开发 333
13.3.1 背景动画 333
13.3.2 标题栏 334
13.3.3 当前天气详情 335
13.3.4 横向ListView组件 336
13.3.5 纵向ListView组件 337
13.3.6 HomePage代码 338
13.4 城市天气切换 340
13.4.1 路由管理 340
13.4.2 切换城市界面 342
13.5 城市搜索匹配 345
13.5.1 SearchDelegate类 345
13.5.2 实现SearchDelegate类 346
13.5.3 搜索文本框默认显示内容 348
13.6 导出App 349
13.6.1 使用命令行创建一个签名文件 349
13.6.2 在android目录下创建一个key.properties文件 350
13.6.3 修改android/app/build.gradle文件内容 350
13.6.4 导出APK文件 351
第 14章 实战项目2:“我的视频”App 352
14.1 实战项目概述 352
14.1.1 项目结构 352
14.1.2 界面分析 353
14.2 启动界面与主界面 354
14.2.1 启动界面 354
14.2.2 主界面 355
14.2.3 主界面内容 357
14.3 网络与JSON数据 365
14.4 路由管理 368
14.5 视频播放界面 370
14.6 短视频 376
14.7 个人中心界面 381
|
|