新書推薦:
《
先进电磁屏蔽材料——基础、性能与应用
》
售價:NT$
1010.0
《
可转债投资实战
》
售價:NT$
454.0
《
王氏之死(新版,史景迁成名作)
》
售價:NT$
250.0
《
敢为天下先:三年建成港科大
》
售價:NT$
352.0
《
长高食谱 让孩子长高个的饮食方案 0-15周岁儿童调理脾胃食谱书籍宝宝辅食书 让孩子爱吃饭 6-9-12岁儿童营养健康食谱书大全 助力孩子身体棒胃口好长得高
》
售價:NT$
214.0
《
身体自愈力:解决内在病因的身体智慧指南
》
售價:NT$
449.0
《
非言语沟通经典入门:影响人际交往的重要力量(第7版)
》
售價:NT$
561.0
《
山西寺观艺术壁画精编卷
》
售價:NT$
7650.0
|
編輯推薦: |
本书将引领读者探讨Flutter框架并构建精彩的移动应用程序,其中涉及Dart语言的详细内容,以及编写高级应用程序所需的全部Flutter块,从而构建一个功能齐全的应用程序。通过清晰的代码示例,我们将学习如何开始一个小型的Flutter项目、添加微件(widget)、应用样式和主题、与远程服务(如Firebase)连接、获取用户输入内容、添加动画效果以提升用户体验,等等。除此之外,读者还将学习如何应用高级特性、地图集成,与包含本地编程语言的特定平台代码协同工作,并利用个性化的动画效果生成精美的UI。简而言之,本书将通过Flutter框架向读者展示移动开发的未来趋势。
|
內容簡介: |
本书首先介绍Flutter框架和Dart的基础知识,读者将学习如何设置开发环境来开始您的Flutter项目,指导读者设计应用程序的用户界面和用户输入功能。随着学习进度的深入,读者将探索navigator小部件来管理您的应用程序路由,并了解如何添加屏幕之间的转换,将着手开发自己的插件,并了解如何构造良好的插件代码。本书将帮助您显示来自Flutter应用程序的地图,添加标记和交互,并使用谷歌Places API。不仅可以通过添加测试来创建一个没有bug的应用程序,而且还可以将其部署到苹果的应用程序商店和谷歌Play上。
|
關於作者: |
本书作者为Alessandro Biessek,但官方不再提供作者详细信息。该书对应网址为https:www.packtpub.commobileflutter-for-beginners。
|
目錄:
|
第1部分 Dart语言简介
第1章 Dart语言概述 3
1.1 Dart语言 3
1.1.1 Dart语言的发展史 4
1.1.2 Dart语言的工作方式 4
1.1.3 Dart语言的基本语法和工具 5
1.2 Flutter与Dart 8
1.2.1 提升生产力 8
1.2.2 易于学习 9
1.2.3 成熟度 11
1.3 Dart语言的结构 12
1.3.1 Dart运算符 13
1.3.2 数据类型和变量 16
1.3.3 类型推断动态机制 19
1.3.4 控制流和循环 20
1.3.5 函数 21
1.3.6 数据结构、集合和泛型 24
1.3.7 泛型 24
1.3.8 泛型的使用原因和时机 24
1.3.9 泛型和Dart字面值 25
1.4 Dart中的面向对象编程 26
1.4.1 Dart面向对象特性 26
1.4.2 封装 27
1.4.3 继承 28
1.4.4 抽象 28
1.4.5 多态 28
1.5 本章小结 28
1.6 进一步阅读 29
第2章 Dart中级编程 31
2.1 Dart类和构造方法 31
2.1.1 枚举类型 32
2.1.2 级联符号 33
2.1.3 构造方法 34
2.1.4 字段访问器get和set 36
2.1.5 静态字段和方法 37
2.1.6 类继承机制 39
2.2 抽象类、接口和混入 40
2.2.1 抽象类 41
2.2.2 接口 42
2.2.3 混入向类中添加行为 43
2.2.4 可调用的类、顶级函数和变量 45
2.3 理解Dart库和包 47
2.3.1 导入机制和库的使用 47
2.3.2 创建Dart库 51
2.3.3 Dart包 58
2.3.4 包结构 59
2.3.5 StagehandDart项目生成器 61
2.3.6 pubspec文件 62
2.3.7 包依赖关系pub 64
2.4 基于Future和Isolate的异步编程 68
2.4.1 Dart Future 68
2.4.2 Dart Isolate 72
2.5 基于Dart的单元测试 73
2.5.1 Dart test包 74
2.5.2 单元测试 74
2.6 本章小结 76
第3章 Flutter简介 79
3.1 移动应用程序开发框架间的比较 79
3.1.1 Flutter解决的问题 80
3.1.2 现有框架间的差异 80
3.2 Flutter编译(Dart) 85
3.2.1 开发编译 86
3.2.2 发布编译 86
3.2.3 所支持的平台 86
3.3 Flutter渲染机制 86
3.3.1 Web技术 87
3.3.2 框架和OEM微件 88
3.3.3 自身的渲染机制 88
3.4 微件简介 89
3.4.1 可组合性 89
3.4.2 不可变性 90
3.4.3 一切均是微件 90
3.5 Hello Flutter 92
3.5.1 pubspec文件 94
3.5.2 运行生成后的项目 96
3.6 本章小结 99
第2部分 Flutter界面 一切均为微件
第4章 微件在Flutter构建布局 103
4.1 无状态有状态微件 103
4.1.1 无状态微件 103
4.1.2 有状态微件 104
4.1.3 代码中的无状态微件和有状态微件 105
4.1.4 继承的微件 109
4.1.5 微件中的key属性 110
4.2 内建微件 111
4.2.1 基本微件 111
4.2.2 Text微件 111
4.2.3 Image微件 112
4.2.4 材料设计和iOS Cupertino微件 113
4.3 内建布局微件 116
4.3.1 容器 116
4.3.2 样式和定位 117
4.3.3 其他微件(手势、动画和转换) 117
4.4 利用微件创建UI(Friend Favors管理器应用程序) 117
4.4.1 应用程序屏幕 118
4.4.2 应用程序代码 118
4.4.3 应用程序主屏幕 119
4.4.4 请求任务屏幕 127
4.5 创建自定义微件 131
4.6 本章小结 132
第5章 处理用户手势和输入 133
5.1 处理用户手势 133
5.1.1 指针 133
5.1.2 手势 134
5.1.3 Material Design微件中的手势 138
5.2 输入微件 139
5.2.1 FormField和TextField 139
5.2.2 Form微件 141
5.3 验证输入(Form) 143
5.4 自定义输入和FormField 144
5.4.1 创建自定义输入 144
5.4.2 自定义输入微件示例 144
5.5 整合工作 148
5.5.1 任务屏幕 149
5.5.2 任务请求屏幕 154
5.6 本章小结 157
第6章 主题和样式 159
6.1 主题微件 159
6.1.1 Theme微件 159
6.1.2 主题的应用 162
6.1.3 Platform类 164
6.2 Material Design准则 165
6.2.1 MaterialApp微件 166
6.2.2 Scaffold微件 167
6.2.3 自定义主题 168
6.3 iOS Cupertino 171
6.3.1 CupertinoApp 171
6.3.2 Cupertino应用 172
6.4 使用自定义字体 173
6.4.1 将字体导入Flutter项目中 173
6.4.2 在应用程序中重载默认的字体 175
6.5 基于LayoutBuilder和MediaQuery的动态样式 175
6.5.1 LayoutBuilder 176
6.5.2 Medi Query 178
6.5.3 其他响应类 181
6.6 本章小结 182
第7章 路由机制屏幕间的导航 183
7.1 Navigator微件 183
7.1.1 Navigator 183
7.1.2 Overlay 184
7.1.3 路由 184
7.1.4 MaterialPageRoute和CupertinoPageRoute 185
7.1.5 整合操作 185
7.1.6 WidgetsApp方式 189
7.2 命名路由 190
7.2.1 移至命名路由 190
7.2.2 从Route中检索结果 192
7.3 屏幕过渡 194
7.3.1 PageRouteBuilder 194
7.3.2 自定义过渡转换操作 195
7.4 Hero动画 196
7.4.1 Hero微件 196
7.4.2 实现Hero转换 197
7.5 本章小结 204
第3部分 开发全功能的应用程序
第8章 Firebase插件 207
8.1 Firebase概述 207
8.1.1 设置Firebase 208
8.1.2 将Flutter应用程序连接至Firebase 210
8.2 Firebase身份验证 214
8.2.1 在Firebase中启用身份验证服务 215
8.2.2 身份验证屏幕 217
8.2.3 利用Firebase进行登录 218
8.3 基于Cloud Firestore的NoSQL数据库 222
8.3.1 启用Firebase上的Cloud Firestore 223
8.3.2 Cloud Firestore和Flutter 224
8.3.3 从Firestore中加载帮助任务 225
8.3.4 更新Firebase中的帮助任务 228
8.3.5 在Firebase上保存一项帮助任务 228
8.4 基于Firebase Storage的Cloud Storage 230
8.4.1 Firebase Storage简介 231
8.4.2 添加Flutter存储依赖关系 231
8.4.3 向Firebase上传文件 232
8.5 Firebase AdMob和广告 235
8.5.1 AdMob账户 235
8.5.2 创建一个AdMob账户 235
8.5.3 Flutter中的AdMob 238
8.5.4 在Flutter中显示广告 240
8.6 基于Firebase ML Kit的机器学习 243
8.6.1 向Flutter中添加ML Kit 243
8.6.2 在Flutter中使用标记检测器 243
8.7 本章小结 246
第9章 构建自己的Flutter插件 247
9.1 创建包插件项目 247
9.1.1 Dart包和Flutter包 247
9.1.2 启动一个Dart包项目 248
9.1.3 Flutter插件包 249
9.2 插件项目结构 250
9.2.1 MethodChannel类 251
9.2.2 实现Android插件 252
9.2.3 实现iOS插件 253
9.2.4 Dart API 254
9.2.5 插件包示例 254
9.2.6 使用插件 255
9.3 向包中添加文档 256
9.3.1 文档文件 256
9.3.2 库文档 257
9.3.3 生成文档 257
9.4 发布包 258
9.5 插件开发中的一些建议 258
9.6 本章小结 259
第10章 从Flutter应用程序访问设备功能 261
10.1 从应用程序启动一个URL 261
10.1.1 显示链接 262
10.1.2 打开一个链接 263
10.2 管理应用程序权限 265
10.2.1 管理Flutter上的权限 266
10.2.2 使用permission_handler插件 266
10.3 导入联系人 267
10.3.1 利用contact_picker导入联系人 267
10.3.2 基于permission_handler的联系人权限 270
10.4 集成相机设备 271
10.4.1 利用image_picker拍摄照片 272
10.4.2 基于permission_handler的相机权限 273
10.5 本章小结 275
第11章 平台视图和地图集成 277
11.1 显示一幅地图 277
11.1.1 平台视图 277
11.1.2 创建平台视图微件 279
11.1.3 google_maps_flutter插件 284
11.1.4 利用google_maps_flutter显示一幅地图 286
11.2 向地图中添加标记 291
11.2.1 Marker类 291
11.2.2 向GoogleMap微件中添加标记 291
11.3 添加地图交互行为 293
11.3.1 动态添加标记 294
11.3.2 GoogleMapController 295
11.3.3 获取GoogleMapController 295
11.3.4 地图相机与位置间的动画效果 295
11.4 使用Google Places API 296
11.4.1 启用Google Places API 296
11.4.2 google_maps_webservice插件 297
11.4.3 利用google_maps_webservice插件获取地址 297
11.5 本章小结 300
第4部分 复杂应用程序的高级资源
第12章 测试、调试和开发 303
12.1 Flutter测试单元和微件测试 303
12.1.1 微件测试 303
12.1.2 flutter_test包 304
12.1.3 testWidgets函数 304
12.1.4 微件测试示例 304
12.2 调试Flutter应用程序 306
12.2.1 Observatory工具 306
12.2.2 附加的调试特性 308
12.2.3 DevTools 309
12.3 分析Flutter应用程序 310
12.3.1 Observatory分析器 310
12.3.2 profile模式 311
12.4 Flutter微件树 313
12.5 应用程序开发的准备阶段 314
12.5.1 release模式 315
12.5.2 发布Android应用程序 315
12.5.3 发布iOS应用程序 320
12.6 本章小结 322
第13章 改进用户体验 323
13.1 Flutter中的可访问性以及翻译功能 323
13.1.1 Flutter的访问支持 323
13.1.2 Flutter国际化 324
13.1.3 向Flutter应用程序中添加本地化功能 325
13.2 基于平台通道的本地和Flutter间的通信 330
13.2.1 平台通道 331
13.2.2 消息编码解码 333
13.3 创建后台进程 333
13.3.1 Flutter中的compute函数 334
13.3.2 compute函数示例 335
13.3.3 后台进程 336
13.3.4 初始化计算 337
13.4 添加Android代码并在后台运行Dart代码 339
13.4.1 HandsOnBackgroundProcessPlugin类 340
13.4.2 BackgroundProcessService类 341
13.5 添加iOS代码并于后台运行Dart代码 345
13.6 本章小结 350
第14章 微件图形控制 351
14.1 利用Transform类转换微件 351
14.1.1 Transform微件 351
14.1.2 Matrix4类 352
14.2 转换类型 353
14.2.1 旋转转换 353
14.2.2 缩放转换 354
14.2.3 平移转换 355
14.2.4 组合转换 356
14.3 转换微件 357
14.3.1 旋转微件 357
14.3.2 缩放微件 358
14.3.3 平移微件 359
14.3.4 使用多重转换 359
14.4 使用自定义画笔和画布 360
14.4.1 Canvas类 360
14.4.2 CustomPaint微件 362
14.4.3 CustomPainter对象 363
14.5 示例 364
14.5.1 定义微件 364
14.5.2 定义CustomPainter 365
14.6 射线图的变化版本 368
14.6.1 定义微件 369
14.6.2 定义CustomPainter 370
14.7 本章小结 373
第15章 插件的动画效果 375
15.1 动画简介 375
15.1.1 Animation类 375
15.1.2 AnimationController类 376
15.1.3 TickerProvider和Ticker 377
15.1.4 CurvedAnimation类 377
15.1.5 Tween类 378
15.2 使用动画 378
15.2.1 旋转动画 378
15.2.2 缩放动画 382
15.2.3 平移动画 383
15.2.4 多重转换和自定义Tween 385
15.2.5 自定义Tween类 387
15.3 使用AnimatedBuilder 390
15.3.1 AnimatedBuilder类 390
15.3.2 再访动画 390
15.4 使用AnimatedWidget 393
15.4.1 AnimatedWidget类 394
15.4.2 利用AnimatedWidget重新实现动画 394
15.5 本章小结 395
|
內容試閱:
|
本书将引领读者探讨Flutter框架并构建精彩的移动应用程序,其中涉及Dart语言的详细内容,以及编写高级应用程序所需的全部Flutter块,从而构建一个功能齐全的应用程序。通过清晰的代码示例,我们将学习如何开始一个小型的Flutter项目、添加微件(widget)、应用样式和主题、与远程服务(如Firebase)连接、获取用户输入内容、添加动画效果以提升用户体验,等等。除此之外,读者还将学习如何应用高级特性、地图集成,与包含本地编程语言的特定平台代码协同工作,并利用个性化的动画效果生成精美的UI。简而言之,本书将通过Flutter框架向读者展示移动开发的未来趋势。
适用读者
本书是针对打算学习谷歌革命性框架Flutter的开发人员而编写的,读者不需要具备Flutter和Dart语言方面的背景知识,但应理解编程语言的基本知识。
本书内容
第1章介绍Dart语言的基本知识。
第2章考查Dart语言中的面向对象编程特性和高级概念、库、包和异步编程。
第3章主要介绍Flutter。
第4章讨论如何在Flutter中构建布局。
第5章利用微件向读者展示如何处理用户输入内容。
第6章学习如何向Flutter微件应用不同风格的样式。
第7章考查如何向应用程序屏幕中加入导航。
第8章讲解如何在Flutter应用程序中使用Firebase插件。
第9章解释如何创建自己的插件。
第10章深入讨论如何与设备特性进行交互,如相机和联系人列表。
第11章向读者展示如何将地图视图添加至Flutter应用程序中。
第12章深入讨论Flutter工具,以提升开发人员的生产力。
第13章探讨如何利用相关特性改善用户体验,如Dart后台执行和国际化。
第14章考查如何利用图形操控创建独特的视觉效果。
第15章涉及如何向Flutter微件中添加动画效果。
环境需求
具体的需求条件将在每章的学习过程中予以介绍。首先,读者需要安装一个浏览器,以便访问DartPad站点并尝试运行Dart代码。
当开发和发布iOS应用程序时,读者应持有开发者证书(需缴纳年费)、一台Mac机,或者至少一台用于测试应用程序的设备。但对于学习Flutter来说,这些都不是必需条件。
读者可访问Flutter的官方网站(https:flutter.devdocsget-startedinstall)查看Flutter环境的安装过程和具体需求。不必担心,我们将从最简单的任务开始,并在必要时安装附加功能。
下载示例代码文件
读者可访问www.packt.com,使用账号登录后即可下载本书的示例代码文件。如果读者购买了本书,还可访问www.packtpub.comsupport,注册后,我们将通过邮件方式将文件发送与读者。
下载过程包括以下步骤。
(1)访问www.packt.com,登录并注册。
(2)选择Support选项卡。
(3)单击Code Downloads。
(4)在Search搜索框中输入本书书名,并遵循后续各项指令。
在文件下载完毕后,可利用下列软件的最新版本解压或析取相关文件夹。
对于Windows平台,WinRAR7-Zip。
对于Mac平台,ZipegiZipUnRarX。
对于Linux平台,7-ZipPeaZip。
除此之外,本书代码包还发布于GitHub中,对应网址为https:github.comPacktPublishing Flutter-for-Beginners。如果代码有更新,将在现有的GitHub存储库中更新。
不仅如此,读者还可访问https:github.com PacktPublishing以查看其他代码包和视频内容。
下载彩色图像
我们还进一步提供了本书中的截图图表的彩色图像,读者可访问https:static.packt- cdn.comdownloads9781788996082_ColorImages. pdf进行查看。
本书约定
本书在文本内容方面包含以下约定。
代码块如下所示。
main {
var yeahDartIsGreat = "Obviously!";
var dartIsGreat = yeahDartIsGreat ?? "I don''t know";
printdartIsGreat; prints Obviously!
}
对于希望引起读者足够重视的特定代码块,相关代码行采用了粗体显示,如下所示。
main {
var someInt = 1;
printreflectsomeInt.type.reflectedType.toString; prints: int
}
命令行输入或输出如下所示。
dart code.dart
图标表示较为重要的说明事项。
图标则表示提示信息和操作技巧。
读者反馈和客户支持
欢迎读者对本书提出建议或意见。对此,读者可向feedback@packtpub.com发送邮件,并以书名作为邮件标题。
若读者针对某项技术具有专家级的见解,抑或计划撰写书籍或完善某部著作的出版工作,则可访问www.packtpub.comauthors。
勘误表
尽管我们全力做到尽善尽美,但错误依然在所难免。如果读者发现谬误之处,无论是文字错误还是代码错误,都望不吝赐教。对此,读者可访问http:www.packtpub.comsubmit- errata,选取对应书籍,单击Errata Submission Form超链接,并输入相关问题的详细内容。
版权须知
一直以来,互联网上的版权问题从未间断,Packt出版社对此类问题异常重视。若读者在互联网上发现本书任意形式的副本,请告知网络地址或网站名称,我们将对此予以处理。关于盗版问题,读者可发送邮件至copyright@packtpub.com。
问题解答
若读者对本书有任何疑问,均可发送邮件至questions@packtpub.com,我们将竭诚为您服务。
|
|