新書推薦:
《
未来特工局
》
售價:HK$
55.8
《
高术莫用(十周年纪念版 逝去的武林续篇 薛颠传世之作 武学尊师李仲轩家世 凸显京津地区一支世家的百年沉浮)
》
售價:HK$
54.9
《
英国简史(刘金源教授作品)
》
售價:HK$
98.6
《
便宜货:廉价商品与美国消费社会的形成
》
售價:HK$
77.3
《
读书是一辈子的事(2024年新版)
》
售價:HK$
77.3
《
乐道文库·什么是秦汉史
》
售價:HK$
80.6
《
汉娜·阿伦特与以赛亚·伯林 : 自由、政治与人性
》
售價:HK$
109.8
《
女性与疯狂(女性主义里程碑式著作,全球售出300万册)
》
售價:HK$
109.8
|
編輯推薦: |
适读人群:本书适合Flutter初学者,对移动开发(iOSAndroid)有一定经验的人员,以及希望了解Flutter原理并进阶实战的相关技术人员。
移动端资深架构师,专家讲解,Flutter核心技术与前沿案例。
谷歌全平台框架Flutter入门到进阶实战的教程,面向基础学习、商业应用场景,从原理到实战。
丰富的案例呈现,极具实操意义的项目案例剖析,即学即用的代码结构、附赠源码。
代码全面适合新版本,疑点、难点解析,可直接学习上架App 。
一套代码多端运用,大前端构建、移动开发、Dart语言学习的名锋利器 。
Stack Overflow 2019年备受开发者追捧的框架之一。
|
內容簡介: |
本书是Flutter从基础入门到进阶实战的教程书,也是一本面向大前端的新技术书。Flutter是谷歌新推出的一个跨平台的、开源的UI框架,同时支持iOS系统和Android系统开发,并且是谷歌未来新操作系统Fuchsia的默认开发套件。本书共10章,内容包括Flutter简介、Dart语言入门、一切皆组件、事件处理、动画、使用网络技术与异步编程、路由、持久化、插件与混合工程和项目实战。本书不仅介绍了Flutter的基本原理、特性,而且在实战章节全面展示了打造一个完整的基于Flutter的App的流程,包含具体细节、思想流程和代码实操。
|
關於作者: |
何瑞君,移动端资深架构师,擅长Android、HTML5、React Native、Flutter等技术开发。GitHub重度使用者,热爱开源项目和技术文章写作。目前就职于平安银行。
|
目錄:
|
目录
第1章Flutter简介1
1.1Flutter的优势1
1.2对比其他技术2
1.3Flutter架构3
1.3.1Flutter Framework3
1.3.2Flutter Engine4
1.4开发环境搭建4
1.4.1Mac上的环境搭建4
1.4.2在Mac上获取SDK并设置环境变量5
1.4.3安装Xcode与运行模拟器6
1.4.4安装Android Studio7
1.4.5在Android Studio上安装Flutter开发插件8
1.4.6安装VSCode与Flutter开发插件9
1.4.7IDE的选择11
1.4.8使用Flutter诊断工具检查Flutter开发环境11
1.4.9创建Demo工程并体验热重载12
1.5Flutter升级14
本章小结15
第2章Dart语言入门16
2.1应用场景16
2.1.1SDK安装和升级17
2.1.2编写一个HelloWorld并运行17
2.2变量与常量18
2.2.1变量18
2.2.2常量18
2.2.3内置类型19
2.2.4数值型19
2.2.5数值型操作20
2.2.6字符串21
2.2.7字符串操作21
2.2.8布尔型23
2.2.9List与数组23
2.2.10Map24
2.2.11dynamic和Object25
2.3算符26
2.4异常捕获27
2.5函数Function28
2.5.1main函数28
2.5.2可选参数28
2.5.3必传参数29
2.5.4可选的位置参数29
2.5.5默认参数29
2.5.6函数作为参数传递30
2.5.7函数作为变量30
2.6异步编程30
2.6.1Future是什么31
2.6.2async和await31
2.6.3继承、接口实现和混合33
2.6.4泛型37
本章小结39
第3章一切皆组件40
3.1基础组件(Basic widgets)42
3.1.1Text43
3.1.2Icon43
3.1.3Image45
3.1.4Button45
3.1.5FlutterLogo47
3.2单一子元素组件(Single-child)48
3.2.1Container48
3.2.2Container的约束49
3.2.3SingleChildScrollView52
3.2.4FittedBox53
3.2.5FractionallySizedBox54
3.2.6ConstrainedBox55
3.2.7Baseline56
3.2.8IntrinsicWidth和IntrinsicHeight58
3.3多子元素组件(Multi-child)58
3.3.1Scaffold58
3.3.2AppBar59
3.3.3Row和Column61
3.3.4ListView64
3.3.5GridView69
3.3.6CustomScrollView70
3.3.7Flex73
3.3.8Wrap75
3.4状态管理77
3.4.1Widget树78
3.4.2Context79
3.4.3StatelessWidget80
3.4.4StatefulWidget80
3.4.5StatefulWidget的组成81
3.4.6State82
3.4.7State生命周期82
3.4.8Widget的唯一身份标识:key88
3.4.9InheritedWidget89
3.5包管理93
3.6常用代码段效果94
3.6.1案例一:侧滑效果95
3.6.2案例二:登录界面96
3.6.3案例三:轮播图效果96
3.6.4案例四:图片浏览器的相册效果97
3.6.5案例五:全局主题设置97
本章小结98
第4章事件处理99
4.1原始指针事件99
4.1.1基本用法99
4.1.2忽略事件102
4.2GestureDetector105
4.2.1基本用法105
4.2.2常用事件106
4.2.3拖曳和缩放效果109
4.2.4事件竞争与手势冲突112
4.2.5手势识别器114
4.3事件原理与分发机制117
4.4事件通知122
本章小结125
第5章动画126
5.1动画原理及概述126
5.1.1Animation127
5.1.2Animatable127
5.1.3AnimationController128
5.1.4Tween130
5.1.5Tween.animate133
5.1.6Curve133
5.2动画的封装与简化136
5.2.1AnimatedWidget136
5.2.2AnimatedBuilder137
5.3Hero动画141
5.3.1基本用法141
5.3.2实现原理143
5.4交错动画145
5.5动画示例151
5.5.1自定义加载动画151
5.5.2实现动画效果153
5.5.3Dialog加载框157
5.5.4测试加载框效果159
本章小结161
第6章使用网络技术与异步编程162
6.1网络协议简介162
6.1.1HTTP协议简介163
6.1.2HTTP 2.0能给我们带来什么164
6.1.3HTTPS166
6.2网络编程167
6.2.1HttpClient167
6.2.2http库170
6.3JSON解析171
6.3.1JSON转成Dart对象172
6.3.2一个完整的例子173
6.3.3根据JSON用工具生成实体类175
6.4dio库176
6.4.1基本用法177
6.4.2dio单例177
6.4.3dio拦截器178
6.4.4dio拦截器链180
6.4.5dio适配器181
6.4.6dio库总结183
6.5异步编程184
6.5.1isolate184
6.5.2event loop184
6.5.3线程模型与isolate188
6.5.4创建单独的isolate190
6.5.5Stream事件流192
本章小结195
第7章路由196
7.1路由简介196
7.1.1基本用法197
7.1.2静态路由197
7.1.3动态路由200
7.1.4参数回传203
7.2路由栈206
7.2.1路由栈详解207
7.2.2pushReplacementNamed方法207
7.2.3popAndPushNamed方法208
7.2.4pushNamedAndRemoveUntil方法209
7.2.5popUntil方法210
7.3自定义路由210
本章小结214
第8章持久化215
8.1shared_preferences本地存储215
8.1.1shared_preferences的常用操作216
8.1.2shared_preferences举例216
8.2SQLite数据库219
8.2.1sqflite依赖库简介220
8.2.2封装SQL Helpers223
8.2.3sqflite实现员工打卡示例225
8.3文件形式存储232
8.3.1path_provider简介233
8.3.2一个简单的日记本示例233
本章小结236
第9章插件与混合工程237
9.1package237
9.1.1添加package的几种方式238
9.1.2更新package239
9.1.3创建自己的package240
9.1.4发布package240
9.2理解Platform Channel241
9.2.1消息传递与编解码器242
9.2.2Platform数据类型支持243
9.2.3MethodChannel简介243
9.2.4SharedPreferences插件源码解析245
9.3混合开发247
9.3.1创建Flutter模块248
9.3.2关联原生工程248
9.3.3编写混合工程代码249
9.3.4热重载混合端代码251
9.3.5aar模块化打包252
9.4FlutterBoost混合方案253
9.4.1框架的由来253
9.4.2使用FlutterBoost改进254
9.4.3FlutterBoost源码分析255
本章小结263
第10章项目实战264
10.1实战一:实现一个招聘类App264
10.1.1项目需求与技术选型264
10.1.2服务端设计265
10.1.3Flutter基础架构270
10.1.4启动页面271
10.1.5使用dio实现网络请求273
10.1.6公司列表与详情实现275
10.1.7用WebSocket实现聊天模块281
10.2实战二:实现异常上报系统286
10.2.1实现原理286
10.2.2FlutterError.onError和Zone287
10.2.3异常上报Flutter的实现288
10.2.4异常上报Android端的实现290
10.2.5服务端接收异常上报293
10.3实战项目源码299
10.4性能分析与辅助工具300
本章小结304
|
內容試閱:
|
前 言
开发者的思考
随着移动开发技术的发展与成熟,移动端所处的萌芽阶段也早已结束。现在,iOS与Android系统已经越来越成熟,各种App之间的系统差异性也越来越小,可以说,移动开发技术已经进入了下半场。其中,如何构建大前端的跨平台方案,是近年来十分火热的话题之一。
我在工作之余,喜欢浏览一些技术类网站,比如掘金、CSDN等。在这些技术网站上,我了解和学习了不少新技术,也在实践这几年出现的跨平台技术,比如Hybrid、React Native、Weex等。
在2018年年初,我第一次了解到谷歌的Flutter技术,经过一番实践之后,我认为这是一种很有前景的新技术,它可以快速在iOS和Android系统上构建高质量的原生用户界面。很明显,Flutter为大前端的跨平台方案提供了一个全新的思路。为此,我专门做了一些开源项目并发表了一些文章,以便更深入地学习、推广Flutter技术。非常荣幸,在这个过程中,电子工业出版社的陈林老师找到了我,并希望我写一本关于Flutter的技术书,这着实让我受宠若惊,也倍感责任重大。
由于Flutter是一门新技术,大家都处于学习的状态中。为了便于大家理解,也便于自己的技术积累,我在学习过程中不断总结,做笔记,逐渐整理和创作了《Flutter:从0到1构建大前端应用》一书。
读者对象
本书是一本关于Flutter入门的书,从基础讲起,也会涉及与Dart语言相关的内容,以便于读者快速迈向Flutter开发。同时,本书也会涉及技术原理、思维等拔高内容。
本书通俗易懂,由浅入深,既适合初学者学习,也适合专业人员阅读。对于在Android、iOS、前端等领域有过相关工作经验的读者来说,阅读体验会更好。
本书内容
本书内容是非常系统化的,用10个章节讲述了学习Flutter必须掌握的知识,内容涉及Flutter简介、环境搭建、Dart语言简介、组件、事件处理、动画、网络、路由、持久化、插件和实战项目等。实践项目会教你如何构建一个Flutter应用,其中会使用Node.js把服务端搭建起来。此外,还会专门写一个Flutter异常上报的项目,用于错误日志的跟踪。
本书各个章节内容比较独立,你可以按照顺序阅读,进行从0到1的全面学习;也可以根据需要把本书作为一本工具查询书,直接跳转到需要查询的章节。每章的内容摘要如下所示。
第1章,Flutter简介:从整体上先介绍移动端近年的发展变化,然后引出Flutter,并介绍Flutter的环境搭建。
第2章,Dart语言入门:介绍要编写Flutter项目所必须掌握的Dart语言核心语法知识,为学好Flutter做铺垫。
第3章,一切皆组件:介绍Flutter相关的核心组件和使用场景等。
第4章,事件处理:介绍Flutter的事件处理机制等。
第5章,动画:介绍Flutter的动画相关内容与核心原理等。
第6章,使用网络技术与异步编程:介绍Flutter网络技术的相关内容、网络层与服务端的交互,以及Flutter的异步编程等。
第7章,路由:介绍Flutter的路由跳转方式和原理等。
第8章,持久化:介绍Flutter的几种持久化存储方式。
第9章,插件与混合工程:介绍Flutter的插件编写方式以及如何在现有原生项目里加入Flutter的相关技术。
第10章,项目实战:第一个项目从服务端与客户端的角度,介绍一个完整的项目案例;第二个项目介绍Flutter的日志捕获方式以及服务端采集日志的方式。
|
|