新書推薦:
《
索恩丛书·盛清统治下的太监与皇帝
》
售價:NT$
403.0
《
透过器物看历史(全6册)
》
售價:NT$
2234.0
《
我在台北故宫博物院读名画
》
售價:NT$
500.0
《
尼罗河往事:古埃及文明4000年
》
售價:NT$
347.0
《
一个人·谁也不是·十万人(诺贝尔文学奖得主反思自我的巅峰之作)
》
售價:NT$
250.0
《
重写晚明史(全5册 精装)
》
售價:NT$
3560.0
《
汉末晋初之际政治研究
》
售價:NT$
602.0
《
强者破局:资治通鉴成事之道
》
售價:NT$
367.0
|
編輯推薦: |
本书在上一版的基础上,根据新版本Flutter对代码进行了全面更新,并增加了动画案例、插件理论和案例、Dio网络请求、Fluro企业级路由、Provider状态管理等内容,适合初学者全面掌握Flutter 。
|
內容簡介: |
本书由资深架构师撰写,详细讲解Flutter的基本概念和使用技巧。既有基础知识,又有丰富示例,并包括详细案例的操作步骤,实操性强。还有配套网站提供了完整案例代码和视频课程,可帮助读者轻松掌握基础知识,快速进入实战。本书主要内容共16章。第1~2章介绍Flutter的基本概念和重要知识点。第3章简单介绍了Flutter SDK指定的Dart语言。第4~7章介绍Flutter常用组件,以及Material Design风格的组件、Cupertino风格的组件,还介绍了页面布局基础知识和技巧。第8~12章介绍Flutter的高级用法,包括如何处理手势,如何加载、处理、展示资源和图片,路由及导航是如何处理的,装饰和动画的处理等。第13章介绍Flutter插件开发。第14~16章介绍开发工具的使用技巧、测试与发布应用,以及综合案例。
|
關於作者: |
亢少军
资深开发者,创业者。专注于视频通讯技术领域。国内首本Flutter著作《Flutter技术入门与实战》作者。多年从事视频会议、远程教育等技术研发,对于Android、iOS以及跨平台开发技术有比较深入的研究和应用,作为主要程序员开发了多个应用项目,涉及医疗、交通、银行等领域。
|
目錄:
|
第2版前言
第1章 开启Flutter之旅 1
1.1 Flutter的特点与核心概念 1
1.1.1 一切皆为组件 2
1.1.2 组件嵌套 2
1.1.3 构建 3
1.1.4 处理用户交互 3
1.1.5 状态 4
1.1.6 分层的框架 5
1.2 搭建开发环境 6
1.2.1 Windows环境搭建 6
1.2.2 MacOS环境搭建 12
1.3 写第一个Flutter程序 16
第2章 Flutter基础知识 22
2.1 入口程序 22
2.2 Material Design设计风格 23
2.3 Flutter主题 23
2.3.1 创建应用主题 23
2.3.2 局部主题 25
2.3.3 使用主题 26
2.4 使用包资源 27
2.5 状态管理 31
2.5.1 有状态及无状态组件 31
2.5.2 Provider的使用 33
2.6 HTTP请求 36
2.6.1 HTTP请求方式 37
2.6.2 HttpClient请求方式 38
2.6.3 Dio请求方式 39
第3章 Dart语言简述 47
3.1 Dart的重要概念与常用开发库 47
3.2 变量与基本数据类型 50
3.3 函数 52
3.4 运算符 54
3.5 流程控制语句 58
3.6 异常处理 61
3.7 面向对象 62
3.7.1 实例化成员变量 62
3.7.2 构造函数 63
3.7.3 读取和写入对象 64
3.7.4 重载操作 65
3.7.5 继承类 66
3.7.6 抽象类 67
3.7.7 枚举类型 68
3.7.8 Mixins 69
3.8 泛型 69
3.9 库的使用 70
3.10 异步支持 71
3.11 元数据 71
3.12 注释 73
第4章 常用组件 75
4.1 容器组件 75
4.2 图片组件 77
4.3 文本组件 79
4.4 图标及按钮组件 81
4.4.1 图标组件 81
4.4.2 图标按钮组件 82
4.4.3 凸起按钮组件 83
4.5 列表组件 84
4.5.1 基础列表组件 85
4.5.2 水平列表组件 86
4.5.3 长列表组件 88
4.5.4 网格列表组件 89
4.6 表单组件 90
第5章 Material Design风格组件 94
5.1 App结构和导航组件 95
5.1.1 MaterialApp(应用组件) 95
5.1.2 Scaffold(脚手架组件) 99
5.1.3 AppBar(应用按钮组件) 101
5.1.4 BottomNavigationBar(底部导航条组件) 103
5.1.5 TabBar(水平选项卡及视图组件) 104
5.1.6 Drawer(抽屉组件) 110
5.2 按钮和提示组件 112
5.2.1 FloatingActionButton(悬停按钮组件) 112
5.2.2 FlatButton(扁平按钮组件) 114
5.2.3 PopupMenuButton(弹出菜单组件) 115
5.2.4 SimpleDialog(简单对话框组件) 117
5.2.5 AlertDialog(提示对话框组件) 118
5.2.6 SnackBar(轻量提示组件) 120
5.3 其他组件 121
5.3.1 TextField(文本框组件) 121
5.3.2 Card(卡片组件) 123
第6章 Cupertino风格组件 126
6.1 CupertinoActivityIndicator(加载指示器组件) 126
6.2 CupertinoAlertDialog(对话框组件) 127
6.3 CupertinoButton(按钮组件) 128
6.4 Cupertino(导航组件集) 129
第7章 页面布局 135
7.1 基础布局处理 136
7.1.1 Container(容器布局) 136
7.1.2 Center(居中布局) 139
7.1.3 Padding(填充布局) 140
7.1.4 Align(对齐布局) 142
7.1.5 Row(水平布局) 144
7.1.6 Column(垂直布局) 145
7.1.7 FittedBox(缩放布局) 147
7.1.8 StackAlignment 150
7.1.9 StackPositioned 152
7.1.10 IndexedStack 154
7.1.11 OverflowBox(溢出父容器显示) 155
7.2 宽高尺寸处理 157
7.2.1 SizedBox(设置具体尺寸) 157
7.2.2 ConstrainedBox(限定最大最小宽高布局) 158
7.2.3 LimitedBox(限定最大宽高布局) 159
7.2.4 AspectRatio(调整宽高比) 161
7.2.5 FractionallySizedBox(百分比布局) 162
7.3 列表及表格布局 163
7.3.1 ListView 163
7.3.2 GridView 166
7.3.3 Table 167
7.4 其他布局处理 169
7.4.1 Transform(矩阵转换) 169
7.4.2 Baseline(基准线布局) 171
7.4.3 Offstage(控制是否显示组件) 172
7.4.4 Wrap(按宽高自动换行布局) 174
7.5 布局综合示例 176
7.5.1 布局分析 176
7.5.2 准备素材 177
7.5.3 编写代码 178
第8章 手势 184
8.1 用GestureDetector进行手势检测 184
8.2 用Dismissible实现滑动删除 186
第9章 资源和图片 189
9.1 添加资源和图片 189
9.1.1 指定asset 189
9.1.2 加载asset 190
9.1.3 平台asset 192
9.2 自定义字体 194
第10章 组件装饰和视觉效果 196
10.1 Opacity(透明度处理) 196
10.2 DecoratedBox(装饰盒子) 197
10.3 RotatedBox(旋转盒子) 204
10.4 Clip(剪裁处理) 205
10.5 案例自定义画板 209
第11章 路由和持久化 227
11.1 路由的基本应用 227
11.2 Fluro企业级路由 235
11.3 Key-Value存储简介 240
11.3.1 shared_preferences的应用 241
11.3.2 shared_preferences的实现原理 244
11.4 文件存储 246
11.5 Sqflite的应用 249
11.5.1 常用操作方法 249
11.5.2 客户表操作示例 251
第12章 动画 256
12.1 动画的基本概念 256
12.2 Flutter的动画相关类 257
12.2.1 Animation简介 258
12.2.2 AnimationController(动画管理类) 258
12.2.3 CurvedAnimation(非线性动画类) 259
12.2.4 Tween(补间值生成类) 260
12.2.5 Listeners和StatusListeners(动画监听类) 261
12.2.6 动画控制流程 262
12.3 动画示例 262
12.3.1 字体放大动画 262
12.3.2 缓动动画 266
12.3.3 遮罩动画 269
12.3.4 数字变化动画 272
12.3.5 图表动画 274
12.4 动画组件 277
12.4.1 用AnimatedOpacity实现渐变效果 277
12.4.2 用Hero实现页面切换动画 279
第13章 Flutter插件开发 282
13.1 获取系统版本插件 282
13.1.1 新建插件 282
13.1.2 运行插件 285
13.1.3 示例代码分析 286
13.2 电池电量插件 293
13.2.1 新建插件 293
13.2.2 插件上层处理 293
13.2.3 Android原生层处理 295
13.2.4 iOS原生层处理 300
13.2.5 测试插件 304
13.3 Channel详解 308
13.3.1 通道名称 309
13.3.2 通信工具BinaryMessager 309
13.3.3 消息编解码器Codec 309
13.3.4 消息处理器Handler 310
13.4 PlatformView显示原生视图 311
13.4.1 新建插件 311
13.4.2 插件上层处理 311
13.4.3 Android原生层处理 314
13.4.4 iOS原生层处理 317
13.4.5 测试插件 321
第14章 开发工具及使用技巧 324
14.1 IDE集成开发环境 324
14.1.1 Android Studio IntelliJ 324
14.1.2 Visual Studio Code 330
14.2 Flutter SDK 337
14.3 使用热重载 338
14.4 格式化代码 339
14.5 Flutter组件检查器 340
第15章 测试与发布应用 343
15.1 测试应用 343
15.1.1 简介 343
15.1.2 单元测试 344
15.1.3 Widget测试 345
15.1.4 集成测试 346
15.2 发布Android版App 348
15.2.1 检查App Manifest 348
15.2.2 查看构建配置 349
15.2.3 添加启动图标 350
15.2.4 App签名 350
15.2.5 构建发布版APK并安装在设备上 353
15.3 发布iOS版App 353
15.3.1 准备工作 353
15.3.2 在iTunes Connect上注册应用程序 353
15.3.3 注册一个Bundle ID 354
15.3.4 在iTunes Connect上创建应用程序记录 355
15.3.5 查看Xcode项目设置 355
15.3.6 添加应用程序图标 356
15.3.7 准备发布版本 358
15.3.8 将应用发布到App Store 360
第16章 综合案例 362
16.1 即时通信App界面实现 362
16.1.1 项目介绍 362
16.1.2 项目搭建 363
16.1.3 入口程序 366
16.1.4 加载页面 367
16.1.5 应用页面 368
16.1.6 搜索页面 375
16.1.7 聊天页面 379
16.1.8 好友页面 383
16.1.9 我的页面 390
16.2 企业站App实现 394
16.2.1 项目介绍 394
16.2.2 项目搭建 396
16.2.3 入口程序 399
16.2.4 加载页面 401
16.2.5 工具及配置文件处理 402
16.2.6 Fluro路由处理 404
16.2.7 Dio请求方法封装 405
16.2.8 索引页面 406
16.2.9 首页 410
16.2.10 首页轮播图 411
16.2.11 首页最新产品列表 412
16.2.12 产品页面 419
16.2.13 产品详情页面 423
16.2.14 联系我们页面 428
|
內容試閱:
|
现在,主流的移动开发平台是Android和iOS,每个平台上的开发技术不太一样,针对每个平台开发应用需要特定的人员,但这样一来开发效率会变得低下,因而需要进行跨平台开发。跨平台技术从最开始的Hybrid混合开发技术,到React Native的桥接技术,一直在演进。
Hybrid开发主要依赖于WebView,但WebView是一个重量级的控件,很容易产生内存问题,而且复杂的UI在WebView上显示的性能不好。React Native技术抛开了WebView,利用JavaScript Core来做桥接,将JavaScript调用转为Native调用。React Native最终会生成对应的自定义原生控件。这种策略将框架本身和App开发者捆绑在系统的控件上,不仅框架本身需要处理大量平台相关的逻辑,随着系统版本变化和API的变化,开发者可能也需要处理不同平台间的差异,甚至有些特性只能在部分平台上实现,这使得跨平台特性大打折扣。
Flutter是最新的跨平台开发技术,可以横跨Android、iOS、MacOS、Windows、Linux等多个系统,还可以打包成Web程序运行在浏览器上。Flutter采用了更为彻底的跨平台方案,即自己实现了一套UI框架,然后直接在GPU上渲染UI页面。
笔者最早接触的跨平台技术是Adobe Air,写一套Action Script代码可以运行在PC、Android及iOS三大平台上。笔者与朋友开发视频会议产品,需要最大化地减少前端的开发及维护工作量,所以,我们先后考察过Cordova、React Native及Flutter等技术。我们觉得Flutter方案更加先进,效率更高,后来就尝试用Flutter开发了开源的WebRTC插件(可在GitHub上搜索Flutter WebRTC)。
写作本书的目的是传播Flutter知识(因为Flutter确实优秀),想在为Flutter社区做贡献的同时也为我们的产品打下坚实的技术基础。在写作本书的过程中,笔者查阅了大量的资料,使得知识体系扩大了不少,收获良多。
本书主要内容
第1章介绍Flutter的基本概念、状态生命周期、Flutter框架,并写第一个Flutter程序,来感受一下Flutter之美。
第2章介绍几个重要知识点,如入口程序、Material Design设计风格、Flutter主题、使用包资源、状态管理Provider使用、Http请求处理、Dio库的使用以及Json与数据模型处理。
第3章简单介绍Dart语言。Dart语言是Flutter SDK指定的语言,我们很有必要补充一下它的基础知识,包括语法特性、基本语句、面向对象等。
第4章介绍常用组件。Flutter里有一个非常重要的核心理念:一切皆为组件,本章主要讲解开发中用得最频繁的组件,如容器组件、图片组件、文本组件、图标组件和表单组件等。
第5章介绍Material Design风格的组件。Material Design风格是一种非常有质感的设计风格,并提供一些默认的交互动画。本章将分类介绍这些组件。
第6章介绍Cupertino风格的组件,这是一类iOS风格的组件,如CupertinoTabBar、CupertinoPageScaffold、CupertinoTabScaffold、CupertinoTabView等。
第7章介绍页面布局的基础知识和技巧,如基础布局处理、宽高尺寸处理、列表及表格布局等,最后通过一个综合布局示例来演示如何编写复杂的页面。
第8章介绍如何处理手势,如轻击、拖动和缩放等。Flutter中提供GestureDetector进行手势检测,并为手势检测提供了相应的监听。
第9章介绍如何加载、处理、展示资源和图片,如添加资源和图片、自定义字体等。
第10章介绍组件装饰和视觉效果的处理,如Opacity(透明度处理)、DecoratedBox(装饰盒子)、RotatedBox(旋转盒子)、Clip(剪裁处理)和CustomPainter(自定义画板)。
第11章介绍Flutter原生路由导航处理、Fluro企业级路由导航处理,还介绍了Key-Value(键值对)存储、文件存储以及Sqf?lite等持久化操作。
第12章介绍动画的基本概念和原理,以及Flutter动画基础类的使用。通过字体放大动画、缓动动画、遮罩动画等示例详细介绍如何自定义动画。
第13章介绍Flutter插件开发的入门知识。Flutter插件可以和原生程序交互,比如调用蓝牙、启用WiFi、打开手电筒,等等。通过获取系统版本及电池电量插件的示例详细介绍了插件的基本开发步骤。通过加载网页插件示例详细介绍了Flutter与原生视图集成的方法。
第14章介绍开发工具及使用技巧,并介绍了几款常用的IDE工具,从代码的编写、辅助功能、程序调试、性能分析等多方面讲解工具及使用技巧。
第15章介绍测试与发布应用,包括测试应用、发布Android版和iOS版App。
第16章以实战案例为主。第一个综合案例介绍如何使用Flutter实现即时通信App的界面。第二个综合案例是实现一个企业站App,综合运用了前面的Flutter组件、布局、网络请求、Json处理、数据展示、状态管理、路由导航以及WebSocket等知识。
阅读建议
本书是一本基础入门加实战的书籍,既有基础知识,又有丰富的示例,包括详细的操作步骤,实操性强。由于Flutter大量使用组件,所以本书对组件的讲解很详细,包括基本概念、属性及代码示例。每个组件都配有小例子,力求精简,还提供了配套网站以提供完整代码,复制完整代码就可以看到效果,这样会增强读者的信心,在轻松掌握基础知识的同时快速进入实战。
如果你正在使用类似React Native等跨平台技术,那么学习Flutter会轻松很多。使用Flutter构建应用时,需要用到Android和iOS的相关知识,因为Flutter依赖移动操作系统提供众多功能和配置。Flutter是一种为移动设备构建用户界面的新方式,但它有一个插件机制可与Android和iOS进行数据及任务通信。本书第13章专门讲解Flutter的插件开发技术,可以作为进一步学习的起点。
Flutter引用了大量Web开发的知识,比如FlexBox布局方式、盒模型等,这些都引用了CSS中的一些思想。所以从UI界面的实现角度来说,只需要熟悉Dart语言就能轻松上手Flutter。本书第3章专门介绍Dart语言的基础知识。
建议读者在一开始先把第1~3章介绍的基础理论通读一遍,到第4章时实际操作并运行每个例子,这样就能开发最简单的Flutter界面了。
第5章和第6章通读即可。第7章介绍的构建页面布局都是开发中常用的布局方法,建议读者仔细阅读、实际操作并运行每个例子,尤其是最后的布局综合例子,按步骤执行一遍,就能理解布局的思路。
第8~11章涵盖Flutter的高级用法,在开发中也经常使用。可以根据实际项目开发和学习的需要阅读。
第12章介绍Flutter动画开发。动画可提升用户体验,读者可以先阅读动画的理论知识,然后尝试自定义一个简单动画,最后熟悉Flutter自带的动画组件。
第13章介绍Flutter插件开发。这需要具备原生开发的知识,比如Java、Objective-C 等相关知识。本章对读者的综合编程能力要求较高,需要掌握多门语言及多平台技术。如果读者不需要开发插件,可以略过本章。
第14~15章实操性很强,读者只要根据书中的步骤仔细操作,就能快速掌握。
第16章的两个综合案例,建议读者按书中步骤逐步实现,同时理解项目的代码组织结构,这样才能胜任实际项目的开发工作。
关于随书代码
本书所列代码力求完整,但限于篇幅,书中没有给出全部代码。完整代码可参见以下网址:
http:www.flutter100.net
https:github.comkangshaojun
致谢
首先感谢机械工业出版社吴怡编辑耐心指点,以及推动了本书的出版。
感谢我的朋友段维伟工程师,江湖人称鱼老大,国内骨灰级WebRTC开发者、视频会议产品合作者。在这里感谢鱼老大的技术分享及帮助。
感谢陈波和陈志红两位好友。在我交稿压力最大的时候,他们从内容安排及语言润色方面都提供了一些非常有用的建议。还要感谢高文翠和黄菊华老师针对本书大纲所给出的指导。
最后还要感谢我的家人。感谢我的母亲及妻子,在我写作的过程中承担了全部家务并照顾孩子,使我可以全身心地投入写作。
亢少军
2019年10月5日
|
|