具体描述
《Flutter:从0到1构建大前端应用》是Flutter从基础入门到进阶实战的教程书,也是一本面向大前端的新技术书。Flutter是谷歌新推出的一个跨平台的、开源的UI框架,同时支持iOS系统和Android系统开发,并且是谷歌未来新操作系统Fuchsia的默认开发套件。本书共10章,内容包括Flutter简介、Dart语言入门、一切皆组件、事件处理、动画、使用网络技术与异步编程、路由、持久化、插件与混合工程和项目实战。本书不仅介绍了Flutter的基本原理、特性,而且在实战章节全面展示了打造一个完整的基于Flutter的App的流程,包含具体细节、思想流程和代码实操。
《Flutter:从0到1构建大前端应用》适合Flutter初学者,对移动开发(iOS/Android)有一定经验的人员,以及希望了解Flutter原理并进阶实战的相关技术人员。
作者简介
何瑞君,移动端资深架构师,擅长Android、HTML5、React Native、Flutter等技术开发。GitHub重度使用者,热爱开源项目和技术文章写作。目前就职于平安银行。
目录信息
1.1 Flutter的优势 1
1.2 对比其他技术 2
1.3 Flutter架构 3
1.3.1 Flutter Framework 3
1.3.2 Flutter Engine 4
1.4 开发环境搭建 4
1.4.1 Mac上的环境搭建 4
1.4.2 在Mac上获取SDK并设置环境变量 5
1.4.3 安装Xcode与运行模拟器 6
1.4.4 安装Android Studio 7
1.4.5 在Android Studio上安装Flutter开发插件 8
1.4.6 安装VSCode与Flutter开发插件 9
1.4.7 IDE的选择 11
1.4.8 使用Flutter诊断工具检查Flutter开发环境 11
1.4.9 创建Demo工程并体验热重载 12
1.5 Flutter升级 14
本章小结 15
第2章 Dart语言入门 16
2.1 应用场景 16
2.1.1 SDK安装和升级 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.9 List与数组 23
2.2.10 Map 24
2.2.11 dynamic和Object 25
2.3 算符 26
2.4 异常捕获 27
2.5 函数Function 28
2.5.1 main函数 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.1 Future是什么 31
2.6.2 async和await 31
2.6.3 继承、接口实现和混合 33
2.6.4 泛型 37
本章小结 39
第3章 一切皆组件 40
3.1 基础组件(Basic widgets) 42
3.1.1 Text 43
3.1.2 Icon 43
3.1.3 Image 45
3.1.4 Button 45
3.1.5 FlutterLogo 47
3.2 单一子元素组件(Single-child) 48
3.2.1 Container 48
3.2.2 Container的约束 49
3.2.3 SingleChildScrollView 52
3.2.4 FittedBox 53
3.2.5 FractionallySizedBox 54
3.2.6 ConstrainedBox 55
3.2.7 Baseline 56
3.2.8 IntrinsicWidth和IntrinsicHeight 58
3.3 多子元素组件(Multi-child) 58
3.3.1 Scaffold 58
3.3.2 AppBar 59
3.3.3 Row和Column 61
3.3.4 ListView 64
3.3.5 GridView 69
3.3.6 CustomScrollView 70
3.3.7 Flex 73
3.3.8 Wrap 75
3.4 状态管理 77
3.4.1 Widget树 78
3.4.2 Context 79
3.4.3 StatelessWidget 80
3.4.4 StatefulWidget 80
3.4.5 StatefulWidget的组成 81
3.4.6 State 82
3.4.7 State生命周期 82
3.4.8 Widget的唯一身份标识:key 88
3.4.9 InheritedWidget 89
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.2 GestureDetector 105
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.1 Animation 127
5.1.2 Animatable 127
5.1.3 AnimationController 128
5.1.4 Tween 130
5.1.5 Tween.animate 133
5.1.6 Curve 133
5.2 动画的封装与简化 136
5.2.1 AnimatedWidget 136
5.2.2 AnimatedBuilder 137
5.3 Hero动画 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.3 Dialog加载框 157
5.5.4 测试加载框效果 159
本章小结 161
第6章 使用网络技术与异步编程 162
6.1 网络协议简介 162
6.1.1 HTTP协议简介 163
6.1.2 HTTP 2.0能给我们带来什么 164
6.1.3 HTTPS 166
6.2 网络编程 167
6.2.1 HttpClient 167
6.2.2 http库 170
6.3 JSON解析 171
6.3.1 JSON转成Dart对象 172
6.3.2 一个完整的例子 173
6.3.3 根据JSON用工具生成实体类 175
6.4 dio库 176
6.4.1 基本用法 177
6.4.2 dio单例 177
6.4.3 dio拦截器 178
6.4.4 dio拦截器链 180
6.4.5 dio适配器 181
6.4.6 dio库总结 183
6.5 异步编程 184
6.5.1 isolate 184
6.5.2 event loop 184
6.5.3 线程模型与isolate 188
6.5.4 创建单独的isolate 190
6.5.5 Stream事件流 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.2 pushReplacementNamed方法 207
7.2.3 popAndPushNamed方法 208
7.2.4 pushNamedAndRemoveUntil方法 209
7.2.5 popUntil方法 210
7.3 自定义路由 210
本章小结 214
第8章 持久化 215
8.1 shared_preferences本地存储 215
8.1.1 shared_preferences的常用操作 216
8.1.2 shared_preferences举例 216
8.2 SQLite数据库 219
8.2.1 sqflite依赖库简介 220
8.2.2 封装SQL Helpers 223
8.2.3 sqflite实现员工打卡示例 225
8.3 文件形式存储 232
8.3.1 path_provider简介 233
8.3.2 一个简单的日记本示例 233
本章小结 236
第9章 插件与混合工程 237
9.1 package 237
9.1.1 添加package的几种方式 238
9.1.2 更新package 239
9.1.3 创建自己的package 240
9.1.4 发布package 240
9.2 理解Platform Channel 241
9.2.1 消息传递与编解码器 242
9.2.2 Platform数据类型支持 243
9.2.3 MethodChannel简介 243
9.2.4 SharedPreferences插件源码解析 245
9.3 混合开发 247
9.3.1 创建Flutter模块 248
9.3.2 关联原生工程 248
9.3.3 编写混合工程代码 249
9.3.4 热重载混合端代码 251
9.3.5 aar模块化打包 252
9.4 FlutterBoost混合方案 253
9.4.1 框架的由来 253
9.4.2 使用FlutterBoost改进 254
9.4.3 FlutterBoost源码分析 255
本章小结 263
第10章 项目实战 264
10.1 实战一:实现一个招聘类App 264
10.1.1 项目需求与技术选型 264
10.1.2 服务端设计 265
10.1.3 Flutter基础架构 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.2 FlutterError.onError和Zone 287
10.2.3 异常上报Flutter的实现 288
10.2.4 异常上报Android端的实现 290
10.2.5 服务端接收异常上报 293
10.3 实战项目源码 299
10.4 性能分析与辅助工具 300
本章小结 304
· · · · · · (收起)
读后感
代码错误太多,很多都不能正常运行,本以为可以按照书中的示例学习,现在出版书籍的门槛越来越低了,还不如官方文档,建议谨慎购买。``` void main () { var value = 12~/7; print(value); }``` 书中给出的答案是 3, 这个是经过认真程序运行过么,严重怀疑出版者的态度,只是...
作者讲解思路清晰,案例丰富完整,便于快速入门,源码地址里还有补充内容,太用心了。作者讲解思路清晰,案例丰富完整,便于快速入门,源码地址里还有补充内容,太用心了。作者讲解思路清晰,案例丰富完整,便于快速入门,源码地址里还有补充内容,太用心了。作者讲解思路清晰...
代码错误太多,很多都不能正常运行,本以为可以按照书中的示例学习,现在出版书籍的门槛越来越低了,还不如官方文档,建议谨慎购买。``` void main () { var value = 12~/7; print(value); }``` 书中给出的答案是 3, 这个是经过认真程序运行过么,严重怀疑出版者的态度,只是...
作者讲解思路清晰,案例丰富完整,便于快速入门,源码地址里还有补充内容,太用心了。作者讲解思路清晰,案例丰富完整,便于快速入门,源码地址里还有补充内容,太用心了。作者讲解思路清晰,案例丰富完整,便于快速入门,源码地址里还有补充内容,太用心了。作者讲解思路清晰...
代码错误太多,很多都不能正常运行,本以为可以按照书中的示例学习,现在出版书籍的门槛越来越低了,还不如官方文档,建议谨慎购买。``` void main () { var value = 12~/7; print(value); }``` 书中给出的答案是 3, 这个是经过认真程序运行过么,严重怀疑出版者的态度,只是...
用户评价
老实说,市面上介绍新技术的热门书籍很多,但真正能做到“授人以渔”的却凤毛麟角。这本书显然属于后者。我发现,看完某一部分后,我不再是机械地复制粘贴书中的代码,而是开始主动思考:“如果我的项目需求稍微变动一下,我该如何调整这里的架构?” 这说明作者传授的不仅仅是具体的代码实现,更重要的是一套构建健壮应用所必须具备的设计思维和解决问题的通用方法论。它让我从一个只知道调用API的“代码工人”,逐渐向一个能够设计和规划整体架构的“应用工程师”转变。对于想要从初级开发者迈向高级或架构师角色的同行来说,这本书提供的知识框架无疑是极具前瞻性和指导意义的。
我必须得承认,最初接触这本书是因为它涵盖的技术栈非常吸引我。现在的前端开发领域,框架和工具层出不穷,感觉自己像个救火队员,哪里有新东西就往哪里跑,始终没有建立起一个系统的、可以应对各种场景的技术体系。这本书的介绍,似乎给了我一个“一站式”解决方案的希望。它没有仅仅停留在某个框架的浅层API介绍上,而是更侧重于如何利用一套统一的技术体系去构建复杂的大型应用。这种“大前端”的视角,对我来说是至关重要的,它意味着我不再需要为不同的平台(比如Web、移动端)去学习完全不同的技术栈,而是能够用一套思维模式去应对多样化的需求。这种宏观层面的指导,远比零散的知识点堆砌更有价值,它教会了我如何“思考”而不是仅仅如何“实现”。
这本书最让我感到惊喜的一点是,它非常注重“工程化”和“最佳实践”的落地。在这个快速迭代的时代,代码的质量和可维护性往往被牺牲掉。然而,这本书很早就强调了测试、CI/CD流程以及代码规范的重要性。它不像有些书只教你怎么“跑起来”,而是教你如何“跑得稳,跑得远”。书中关于性能优化和部署策略的讲解,绝对是干货满满,涉及到很多我以往开发中常常忽略的细节,比如资源懒加载的高级技巧、服务端渲染(SSR)的性能陷阱等等。这些内容,体现了作者深厚的行业积累,让我意识到,真正的大型应用构建,绝不仅仅是功能的堆砌,更是一门关于效率、稳定和可维护性的艺术。
阅读这本书的过程,就像是跟着一位经验丰富的老兵在实战中学习一样,节奏把握得非常到位。它没有一上来就抛出晦涩难懂的理论,而是通过一系列精心设计的案例,循序渐进地引导读者进入核心概念。我特别欣赏作者在处理复杂逻辑时的那种“庖丁解牛”式的分解能力,总能用最直观的方式揭示出隐藏在表象之下的设计哲学。比如,在处理状态管理的那几个章节,作者并没有直接搬运官方文档的术语,而是结合实际应用场景,用生动的比喻和流程图,把那些抽象的状态流转讲得明明白白。这种教学方式极大地降低了学习曲线,让我感觉自己不是在啃一本枯燥的教科书,而是在参与一个真实的、不断迭代的项目开发。
这本技术书籍的装帧设计真是独具匠心,封面那种简洁又不失深度的设计感,一下子就抓住了我的眼球。我之前看过的很多技术书,封面要么就是大段的代码堆砌,要么就是过于花哨的插图,读起来总觉得少了点什么。而这本的排版,无论是字体选择还是行间距的处理,都透露出一种成熟和稳重,让人一看就知道这是一本沉下心来打磨过的作品。内页的印刷质量也无可挑剔,纸张的触感很舒服,长时间阅读眼睛也不会感到疲劳,这对于我们这些需要长时间面对屏幕的开发者来说,简直是福音。而且,书本的装订非常结实,即便是频繁翻阅查找资料,也不用担心它会散架。整体来说,从物理层面上,这本书就给我带来了一种“物有所值”的阅读体验,这无疑为接下来的深度学习打下了良好的心理基础,让我对书中的内容充满期待,希望能像它精美的外壳一样,内容也同样扎实有料。
入门书籍
Flutter入门书籍,写的还是非常不错的,很适合初学者。差评后面的实战项目,爬不到数据了,作者也没给出别的解决方案。
内容全面,但是不是特别细
作者讲解思路清晰,案例丰富完整,便于快速入门,源码地址里还有补充内容,太用心了
入门书籍