欢迎光临
免费的PDF电子书下载网站

Flutter技术入门与实战 第2版 PDF下载

编辑推荐

本书在上一版的基础上,根据新版本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以及跨平台开发技术有比较深入的研究和应用,作为主要程序员开发了多个应用项目,涉及医疗、交通、银行等领域。

Flutter技术入门与实战 第2版 PDF下载

目录

第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 Stack/Alignment ; 150

7.1.9 Stack/Positioned ; 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.com/kangshaojun

致谢

首先感谢机械工业出版社吴怡编辑耐心指点,以及推动了本书的出版。

感谢我的朋友段维伟工程师,江湖人称“鱼老大”,国内骨灰级WebRTC开发者、视频会议产品合作者。在这里感谢鱼老大的技术分享及帮助。

感谢陈波和陈志红两位好友。在我交稿压力最大的时候,他们从内容安排及语言润色方面都提供了一些非常有用的建议。还要感谢高文翠和黄菊华老师针对本书大纲所给出的指导。

最后还要感谢我的家人。感谢我的母亲及妻子,在我写作的过程中承担了全部家务并照顾孩子,使我可以全身心地投入写作。

 

亢少军

2019年10月5日

Flutter技术入门与实战 第2版 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:Flutter技术入门与实战 第2版