书籍详情
《Flutter小白开发——跨平台客户端应用开发学习路线》[32M]百度网盘|亲测有效|pdf下载
  • Flutter小白开发——跨平台客户端应用开发学习路线

  • 出版社:清华大学出版社京东自营官方旗舰店
  • 出版时间:2023-05
  • 热度:11437
  • 上架时间:2024-06-30 09:38:03
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

产品特色

内容简介

《Flutter小白开发——跨平台客户端应⽤开发学习路线》以移动平台(iOS/安卓)与Web 平台为例,系统地介绍如何基于Flutter 框架开发跨平台的应用。

《Flutter小白开发——跨平台客户端应⽤开发学习路线》分为三大部分,共27 章。第一部分(第1~4 章)主要介绍开发前要做的准备工作,包括安装命令行界面、开发环境,熟悉Dart 语言和包管理知识;第二部分(第5~14 章)带领大家熟悉和理解Flutter框架,掌握Flutter 应用开发的基础知识;第三部分(第15~27 章)是Flutter 实践,结合服务端应用接口,实现一些真实应用里经常用到的界面,并将做好的应用发布到应用商店。

《Flutter小白开发——跨平台客户端应⽤开发学习路线》提供了一套系统、全面的训练任务,从易到难,轻松有趣。从准备开发工具与开发环境开始,熟悉程序语言,了解应用框架,直到具体实践与应用分发,引领大家逐步掌握Flutter 应用框架的使用技巧,获得开发移动端应用的基础能力,对于初学者来说非常友好。


作者简介

王皓,宁皓网作者,独立开发者,自学应用开发十年有余,创作过数百万字的应用技术内容与数百小时的技术视频,内容覆盖Web技术、客户端与服务端应用开发,内容风格简单有效,逻辑清晰,帮助无数技术爱好者掌握了应用开发技能。

目录

第一部分 开发准备

第1 章 准备开发 2

1.1 命令行界面 2

1.1.1 任务:Windows 系统下准备命令行界面Cmder 2

1.1.2 任务:在macOS 系统下准备命令行界面Terminal 3

1.1.3 任务:熟悉基本命令 3

1.1.4 理解环境变量目录 5

1.1.5 知道命令来自哪里 5

1.1.6 命令行工具的帮助信息 6

1.1.7 命令行界面的配置文件 6

1.2 代码编辑器 7

1.3 源代码管理 8

第2章 开发环境 9

2.1 下载开发工具包 9

2.1.1 任务:macOS 系统下安装Flutter 9

2.1.2 任务:Windows 系统下安装Flutter 10

2.1.3 任务:配置使用国内镜像 11

2.2 准备iOS 与macOS 应用开发环境 11

2.2.1 任务:安装Rosetta 12

2.2.2 任务:安装Homebrew 12

2.2.3 任务:安装与准备Xcode 12

2.3 准备Android平台应用开发环境 13

2.4 准备设备模拟器 14

2.5 准备Web 应用开发环境 15

2.6 准备代码编辑器VSCode 15

2.7 创建Flutter 项目 16

2.7.1 任务:创建并运行Flutter 项目 16

2.7.2 任务:清理项目与源代码管理 18

2.8 问题与思考 18

第3章 熟悉Dart 语言 21

3.1 准备工作 21

3.2 变量 22

3.2.1 var 22

3.2.2 final 22

3.2.3 const 23

3.2.4 理解var、final 与const 的区别 23

3.3 类型 25

3.4 内置类型 25

3.4.1 字符串 25

3.4.2 数字 26

3.4.3 布尔值 26

3.4.4 列表 27

3.4.5 集合 27

3.4.6 映射 28

3.5 函数 28

3.5.1 创建函数 29

3.5.2 执行函数 29

3.5.3 函数参数 29

3.5.4 函数有多个参数 29

3.5.5 有名字的参数 30

3.5.6 必填参数 30

3.5.7 参数默认值 31

3.5.8 函数返回值 31

3.6 流程控制 31

3.6.1 if 语句 32

3.6.2 switch 语句 32

3.7 异常 34

3.7.1 抛出异常(throw) 34

3.7.2 捕获异常(catch/on) 34

3.8 类 35

3.8.1 定义一个类 36

3.8.2 实例化一个类 36

3.8.3 属性 36

3.8.4 构造方法 37

3.8.5 this 关键字 37

3.8.6 带名字的构造方法 38

3.8.7 方法 38

3.8.8 继承 39

3.8.9 类属性 39

3.8.10 类方法 40

3.9 泛型 40

3.10 库 41

3.10.1 使用内置库 41

3.10.2 指定库前缀 41

3.10.3 导入部分库 42

3.10.4 导入开发者个人库里的资源 42

3.11 Future 42

3.11.1 定义异步函数 43

3.11.2 使用异步函数提供的值 43

3.11.3 处理异步函数遇到的错误 44

第4章 包管理 45

4.1 包(Package) 45

4.2 pubspec.yaml 文件 45

4.3 安装包 46

4.3.1 解决包依赖问题 46

4.3.2 dependencies 属性 46

4.3.3 版本号 47

4.3.4 pubspec.lock 文件 47

4.3.5 package_config.json 文件 47

4.4 使用包 48

4.5 升级包 48

第二部分 Flutter基础

第5章 基本部件 52

5.1 准备 52

5.1.1 任务:准备项目(widget) 52

5.1.2 任务:准备应用入口 52

5.2 小部件(Widget) 53

5.3 自定义一个无状态的小部件 54

5.4 Text(文本) 56

5.5 RichText(富文本) 58

5.6 Image(图像) 59

5.6.1 任务:显示资源包里的图像 60

5.6.2 任务:显示来自网络的图像 61

5.6.3 任务:调整图像的显示 62

5.7 Container(容器) 63

5.7.1 任务:使用Container 小部件 64

5.7.2 任务:装饰容器 66

5.8 整理项目 69

第6章 页面结构 70

6.1 准备项目(page-structure) 70

6.2 MaterialApp 70

6.2.1 任务:创建Material 应用 70

6.2.2 任务:使用图标(Icon) 71

6.2.3 任务:使用按钮(ElevatedButton) 72

6.2.4 任务:定制应用的主题样式 73

6.3 Scaffold(页面结构) 75

6.4 AppBar(应用栏) 76

6.5 TabBar(标签栏) 77

6.6 BottomNavigationBar(底部导航栏) 79

6.6.1 任务:设置底部导航栏 79

6.6.2 任务:把App 转换成有状态小部件(StatefulWidget) 80

6.6.3 任务:单击底部导航栏项目,切换当前活动项目 81

6.6.4 任务:单击底部导航栏项目,切换显示小部件 82

6.6.5 任务:单击底部导航栏项目,动态显示或隐藏AppBar 83

6.7 FloatingActionButton(漂浮动作按钮) 84

6.8 整理项目 85

第7章 定义部件 86

7.1 准备 86

7.1.1 任务:准备项目(define-widget) 86

7.1.2 任务:配置VSCode 编辑器代码片断 87

7.2 AppPageHeader(页面头部) 88

7.3 AppLogo(应用标志) 89

7.4 AppPageMain(页面主体) 90

7.5 PostIndex(内容索引) 93

7.6 AppPageBottom(页面底部) 94

7.7 AppFloatingActionButton(漂浮动作按钮) 96

7.8 目录结构 97

7.9 小部件树 97

7.10 整理项目 98

第8章 弹窗对话 99

8.1 准备项目(modal-dialog) 99

8.2 BottomSheet(底部面板) 99

8.2.1 任务:显示页面底部面板 99

8.2.2 任务:用漂浮动作按钮显示与关闭底部面板 101

8.3 AlertDialog(警告对话框) 103

8.4 SnackBar(消息提示栏) 105

8.5 Drawer(边栏抽屉) 106

8.5.1 任务:使用边栏抽屉 107

8.5.2 任务:设置边栏抽屉上显示的内容(ListView 与ListTile) 108

8.6 PopupMenuButton(弹出菜单按钮) 111

8.7 整理项目 113

第9章 页面布局 114

9.1 准备 114

9.1.1 任务:准备项目(layout) 114

9.1.2 任务:准备练习页面 114

9.2 约束 116

9.2.1 任务:理解小部件的约束 116

9.2.2 任务:准备一个布局演示项目小部件 119

9.2.3 任务:使用安全区域(SafeArea)和尺寸盒子(SizedBox) 120

9.3 Align(对齐) 121

9.4 Column(栏/列) 122

9.5 Row(行/排) 124

9.6 Expanded(扩展空间) 126

9.7 Stack(堆) 127

9.8 Positioned(定位) 128

9.9 整理项目 128

第10 章 表单元素 129

10.1 准备 129

10.1.1 任务:准备项目(input) 129

10.1.2 任务:准备练习小部件PlaygroundInput 129

10.2 ElevatedButton(按钮) 130

10.3 TextField(文本字段) 133

10.3.1 任务:使用文本字段小部件 133

10.3.2 任务:获取文本字段里的数据 135

10.4 TextFormField(文本表单字段) 137

10.4.1 任务:使用文本表单字段 137

10.4.2 任务:验证文本表单字段数据 138

10.5 TextEditingController(文本编辑控制器) 141

10.6 Form(表单) 143

10.7 问题与思考 144

10.8 整理项目 144

第11章 路由导航(一) 145

11.1 准备 145

11.1.1 任务:准备项目(routing) 145

11.1.2 任务:准备导航与路由演示小部件 145

11.2 路由与导航器 146

11.3 用命令式管理路由 146

11.4 默认路由 149

11.5 路由表 151

11.6 生成路由时的回调 152

11.6.1 任务:使用生成路由回调onGenerateRoute 152

11.6.2 任务:在路由名字中提取参数 154

11.7 问题与思考 157

11.8 整理项目 157

第12章 状态管理 158

12.1 准备 158

12.1.1 任务:准备项目(state-management) 158

12.1.2 任务:准备状态管理演示小部件 158

12.1.3 任务:安装provider 159

12.2 准备数据 160

12.3 提供数据 161

12.3.1 确定提供数据的位置 162

12.3.2 任务:用Provider 提供数据与方法 162

12.4 使用数据 163

12.5 数据变化 165

12.5.1 任务:用ChangeNotifierProvider提供数据与方法 165

12.5.2 任务:在小部件里使用Provider 提供的数据与方法(Consumer) 167

12.6 问题与思考 168

12.7 整理项目 168

第13章 路由导航(二) 169

13.1 准备项目(routing_2) 169

13.2 页面 169

13.2.1 任务:使用Navigator 声明式接口(Pages API) 169

13.2.2 任务:使用MultiProvider 提供多个数据类 171

13.2.3 任务:动态添加与移除页面 173

13.3 路由器 176

13.3.1 任务:创建路由器代表(RouterDelegate) 176

13.3.2 任务:使用路由器管理路由(Router) 177

13.3.3 任务:应用状态变化时通知Router 重建Navigator 180

13.4 路由配置 181

13.4.1 调试Web 应用 181

13.4.2 任务:定义路由配置类型 181

13.4.3 任务:把路由信息转换成自定义的路由配置(parseRouteInformation) 182

13.4.4 任务:根据路由配置数据修改应用状态(setNewRoutePath) 184

13.4.5 任务:把路由配置转换成路由信息(restoreRoute Information) 185

13.5 问题与思考 188

13.6 整理项目 188

第14章 网络请求 189

14.1 准备 189

14.1.1 任务:准备项目(http) 189

14.1.2 任务:准备网络请求演示小部件 189

14.2 http 190

14.2.1 任务:安装http 并使用资源 190

14.2.2 任务:请求服务端接口获取数据 191

14.2.3 任务:将JSON 数据转换成自定义类型 193

14.2.4 任务:请求服务端接口创建内容(用户) 195

14.2.5 任务:发送用户登录请求 197

14.2.6 任务:请求服务端接口更新内容(用户) 200

14.3 序列化 202

14.4 问题与思考 205

14.5 整理项目 205

第三部分 Flutter实践

第15章 内容列表 208

15.1 准备项目(list) 208

15.2 应用配置 208

15.3 创建内容列表 210

15.3.1 任务:创建内容列表小部件(PostList) 210

15.3.2 任务:定义并提供获取内容列表数据方法 211

15.3.3 任务:请求内容列表数据 213

15.3.4 任务:定义内容数据类型 214

15.3.5 任务:转换生成一组内容(Post)类型的数据 217

15.3.6 任务:使用ListView 构建内容列表视图 220

15.4 整理项目 221

第16章 列表项目 222

16.1 准备项目(list-item) 222

16.2 定义列表项目 222

16.2.1 任务:创建内容列表项目小部件(PostListItem) 222

16.2.2 任务:定义内容媒体小部件(PostMedia) 224

16.2.3 任务:定义内容头部小部件(PostHeader) 226

16.2.4 任务:定义用户头像小部件(UserAvatar) 228

16.2.5 任务:定义内容动作小部件(PostActions) 230

16.3 问题与思考 233

16.4 整理项目 234

第17章 内容页面 235

17.1 准备项目(post) 235

17.2 开发单个内容页面 235

17.2.1 任务:处理单击内容列表项目图像 235

17.2.2 任务:定义单个内容数据模型(PostShowModel) 237

17.2.3 任务:单击内容项目图像时显示内容页面 240

17.2.4 任务:定义内容页面主体小部件(PageShowMain) 243

17.2.5 任务:定义内容正文小部件(PostContent) 247

17.2.6 任务:定义内容标签小部件(PostTags) 249

17.2.7 任务:配置路由器处理内容页面 251

17.2.8 任务:请求内容页面需要的数据 254

17.3 问题与思考 256

17.4 整理项目 259

第18章 验证身份 260

18.1 准备项目(auth) 260

18.2 登录页面 260

18.2.1 任务:添加用户登录页面 260

18.2.2 任务:准备登录表单小部件(AuthLoginForm) 263

18.3 请求登录 270

18.3.1 任务:定义用户登录相关类型(LoginData,Auth) 270

18.3.2 任务:自定义网络请求异常(HttpException) 271

18.3.3 任务:定义身份验证模型(AuthModel) 272

18.3.4 任务:请求用户登录 274

18.4 问题与思考 276

18.5 整理项目 276

第19章 状态管理 277

19.1 准备项目(state-management_2) 277

19.2 改造创建Provider 的方式 277

19.2.1 任务:使用Provider 的value 构造方法提供值 277

19.2.2 任务:在单独的文件里定义要提供的Provider 278

19.3 在用户设备上存取数据 279

19.3.1 任务:用shared preferences 插件记住登录状态 279

19.3.2 任务:应用启动以后恢复登录状态 282

19.4 使用代理Provider 解决依赖 285

19.4.1 任务:定义应用服务与接口客户端(AppService 和ApiHttpClient) 285

19.4.2 任务:用ChangeNotifierProxyProvider解决依赖 287

19.4.3 任务:改造PostIndexModel 用apiHttpClient 发送请求 288

19.5 整理项目 289

第20章 点赞内容 290

20.1 准备项目(like) 290

20.2 点赞内容相关操作 290

20.2.1 任务:使用GestureDetector 处理手势动作 290

20.2.2 任务:定义点赞内容模型 291

20.2.3 任务:定义取消点赞模型 292

20.2.4 任务:定义提供点赞的Provider 293

20.2.5 任务:处理用户点赞动作 294

20.2.6 任务:处理用户取消点赞动作 296

20.3 问题与思考 298

20.4 整理项目 298

第21章 列表布局 299

21.1 准备项目(post-list-layout) 299

21.2 内容列表布局 299

21.2.1 任务:准备热门内容列表 299

21.2.2 任务:准备内容列表布局相关数据与方法 301

21.2.3 任务:设置与存储内容列表布局 302

21.2.4 任务:准备网格内容列表 303

21.2.5 任务:准备多种布局的内容列表项目 305

21.2.6 任务:恢复内容列表布局 308

21.3 问题与思考 310

21.4 整理项目 312

前言/序言

Flutter 最初是由Google 公司发起的开源项目,现如今已广泛用于各行各业的应用开发中。不仅Google 内部会使用它构建应用,国内几乎所有大公司也都在使用Flutter,如阿里的闲鱼App,就是一个非常成功的应用案例。

基于Flutter 框架,你可以用同样的方法为不同的平台开发应用,即你可以使用同一种方法构建跨iOS、安卓、Web、macOS、Windows、Linux 等平台的应用。使用Flutter 内建的界面组件(小部件),可以快速做出应用界面,从而大大提高开发效率。开发体验也十分顺畅,保存项目文件以后,就可以实时预览应用界面的变化。

为什么要写本书

Flutter 中有上千个小部件,从中提取常用的小部件,也会有上百个。但问题是我们即便搞明白了这上百个小部件的用法,也不一定有能力将它们组织在一起,实现一个完整的应用。

本书为读者提供了一套系统的训练任务,从准备开发工具与环境,熟悉程序语言,了解应用框架,直到具体实践与分发应用。读者并不需要面面俱到地学习Flutter 应用提供的全部内容,重要的是理解与掌握方法,这就需要亲手写一些代码,真正完成一个应用,才能学会如何把各种零部件组织成一个完整的系统。

设计本书内容时,笔者尽量通过一些可实际操作的任务,引领大家逐步理解Flutter 应用框架,构建起一套系统的应用开发方法,获得开发移动端应用的基础能力。因此,本书内容知识点虽多,但整体架构从易到难,轻松有趣,对于初学者来说非常友好。

本书内容

本书以移动平台(iOS/安卓)与Web 平台为例,系统地介绍如何基于Flutter 框架开发跨平台的应用。

第一部分:开发准备。

第一部分包括第1~4 章,主要介绍了开发前要做的准备工作。读者需要准备好开发用的工具,如代码编辑器、终端、源代码管理工具等,在Windows 或macOS 平台上搭建好应用的开发环境,熟悉开发Flutter 应用使用的Dart 程序语言。

第二部分:Flutter 基础。

第二部分包括第5~14 章,主要工作是带领大家熟悉和理解Flutter 框架,掌握Flutter应用开发的基础知识。读者要了解一些常用的小部件,能搭建页面的基础结构,能够自定义小部件,还要学会管理应用的路由与状态,并掌握通过网络获取应用数据的方法。

第三部分:Flutter 实践。

第三部分包括第15~27 章,主要内容是实践之前所学,结合服务端应用接口,实现一些真实应用里经常用到的界面。读者需要学会创建内容列表页面和显示内容详情页面,实现用户注册与登录功能,能够创建内容与上传文件,实现内容点赞功能,并能将做好的应用发布到Apple Store 中(仅限于iOS 应用)。

读者对象

应用开发初学者:如果您对应用开发感兴趣,但又不知道从哪里下手,这本书就是非常好的起点。

在校学生:本书提供了完整的跨平台应用开发训练与学习路线。

服务端开发者:通过本书您可以掌握客户端(iOS、Android 与Web)应用开发。

独立开发者:想要通过独立设计与开发应用成为一名独立开发者,掌握客户端应用开发是必不可少的技能。

本书学习资源

本书提供了详细的教学视频,以及项目代码、文件资源、后端服务、前端应用等学习资源。

项目代码:在Github与Coding上,可找到本书开发的应用源代码。读者可以用Git将项目复制到本地,运行并调试,可以使用一些带图形界面的Git工具,检查项目里的每一次提交。

文件资源:本书提供了开发应用时需要的一些图像、小图标等文件资源。

后端服务:开发Flutter应用时需要配合使用服务端接口,如获取内容列表数据、处理用户注册与登录、发布内容上传文件等。笔者开发了一个服务端应用,读者可以在开发时直接使用该服务端应用里提供的接口。

前端应用:笔者使用 Vue.js 框架开发了一个前端应用,在这个应用里使用的服务端接口,跟书中开发的应用使用的服务端接口是同一个。

读者服务

读者可通过宁皓网联系笔者,也可添加笔者的微信或关注B站账号。我们可以交流技术,也可以畅聊工作与生活。