Dart语言实战——基于Flutter框架的程序开发

Dart语言实战——基于Flutter框架的程序开发"

作者:亢少军
ISBN:9787302582199
定价:¥119
字数:千字
页数:
出版时间:2021.12.01
开本:
版次:2-1
装帧:
出版社:清华大学出版社
简介

本书系统阐述了跨平台Dart编程语言基础知识、面向对象编程, 以及网络编程和异步编程等高级知识。全书共分为4 篇: 第1篇为Dart基础(第1 ~9章) , 第2篇为面向对象编程( 第10 ~14 章) , 第3篇为Dart 进阶(第15 ~24章) , 第4篇为商城项目实战( 第25 ~37章) 。书中主要内容包括: Dart语法基础、Dart编码规范、数据类型、运算符、流程控制语句、函数、面向对象基础、继承与多态、抽象类与接口、枚举类、集合框架、集合与泛型、异常处理、元数据、Dart库、单线程与多线程、网络编程和异步编程等。

书中包含大量应用示例, 读者不仅可以由此学会理论知识还可以灵活应用。书中示例基于 Flutter环境开发, 读者在学习到Dart语言知识的同时还可以学会Flutter框架技术。书中通过一个商城App案例详细阐述了如何使用Flutter开发App, 内容完整, 步骤清晰, 提供了工程化的解决方案。

本书可作为Dart和Flutter初学者的入门书籍, 也可作为从事跨平台移动应用开发的技术人员及培训机构的参考书籍。

前言

近些年来,利用跨平台技术来开发App无论在移动端还是桌面端都备受欢迎。开源的跨平台框架也是百花齐放,Flutter是最新的跨平台开发技术,可以横跨Android、iOS、macOS、Windows、Linux等多个系统。Flutter还可以打包成Web程序运行在浏览器上。Flutter采用了更为彻底的跨平台方案,即自己实现了一套UI框架,然后直接在GPU上渲染UI页面。

笔者最早接触的跨平台技术是Adobe Air技术,写一套Action Script代码可以运行在PC、Android及iOS三大平台上。目前,笔者与朋友开发视频会议产品及开源项目,需要最大化地减少前端的开发及维护工作量,所以,我们先后考察过Cordova、React Native及Flutter等技术。我们觉得Flutter方案更加先进,效率更高,后来就尝试用Flutter开发了全球第一个开源的WebRTC插件(可在GitHub上搜索Flutter WebRTC)。

Flutter的开发语言是Dart,所以本书重点介绍与Dart语言相关的知识。出版本书的目的是想传播Flutter知识(因为Flutter确实优秀),想在为Flutter社区做点贡献的同时也为我们的产品打下坚实的技术基础。通过编写本书,笔者查阅了大量资料,使得知识体系扩大了不少,收获良多。

本书是《Dart语言实战——基于Flutter框架的程序开发》的第2版,第1~14章配套了教学视频,并新增了Dart本地库、系统内置库以及第三库的使用方法,以及Dart持久化的几种方式等内容。

商城项目实战篇采用FlutterSDK自带库方案,减少对第三方库的依赖,使得项目更加轻量化。商城架构改为Flutter+Node+React+MySQL,采用真实接口开发。使用HttpClient为封装网络请求服务,替代第三方库Dio。编写消息派发库Call,替代第三方事件通知库EventBus。路由工具使用Flutter框架自带路由,替代第三方库Fluro。使用EasyRefresh上拉刷新组件,并添加分页处理逻辑。

本书主要内容

第1章介绍Dart语言简介,介绍Dart语言的发展及能够支持的平台。

第2章介绍Dart语言的两个开发环境搭建过程,包括Windows及macOS的开发环境搭建。

第3章简单介绍如何使用IDE在Flutter环境下运行第一个Dart程序。

第4章介绍Dart语言的语法基础,包括关键字、变量和常量等。

第5章介绍Dart语言的编码规范,包括样式规范、文档规范及各种使用规范。

第6章介绍Dart语言的常用数据类型,包括数字、字符串、List、Map及Set类型的定义及使用方法。

第7章介绍Dart语言的运算符,包括算术、关系、逻辑、类型检测及级联操作符。

第8章介绍常用的流程操作语句,包括条件分支、循环语句及断点Assert等。

第9章介绍函数的构造函数定义、参数传递方法、可选参数的使用及匿名函数的使用方法等。

第10章介绍面向对象的基本概念、类的声明、成员变量与成员方法,以及枚举类型等相关知识。

第11章介绍对象的创建与使用,以及Dart语言里各个构造方法的定义及使用。

第12章介绍继承与多态,通过示例详细讲解方法重写的知识点。

第13章介绍抽象类和接口的概念,以及如何声明抽象类与接口,如何实现抽象类和接口。

第14章介绍Dart语言里Mixin(混入)的概念及特性、Mixin的使用、重命名方法处理以及Mixin对象类型。

第15章介绍Dart异常的概念,抛出异常及捕获异常的使用方法。同时介绍如何自定义异常并使用。最后通过Http异常处理的实例综合运用异常。

第16章介绍集合的概念。详细介绍Dart语言中List、Set及Map等常用集合的概念及使用方法。

第17章介绍泛型的概念及作用。通过示例详解介绍泛型在集合、类、抽象类和方法里的使用方法。

第18章介绍单线程与多线程的概念、事件循环机制、Future概念及异步处理,同时介绍Stream概念及Bloc设计模式,另外还介绍Isolate的高级用法。

第19章通过多个示例详细介绍Http网络请求、Dio网络请求及WebSocket的用法。

第20章介绍元数据定义、常用元数据和自定义元数据。另外通过Json生成实体类的方法详细介绍元数据的应用场景。

第21章介绍常用开发库及第三方库的使用,如库的导入、导出、命名与拆分等。

第22章详细阐述Flutter持久化的处理方法,如文件存储、共享变量及本地数据库操作。

第23章通过Canvas的接口使用详细介绍Flutter里画布操作的API使用方法。

第24章介绍Flutter Web开发的流程及具体步骤,另外介绍第三方库选取注意的事项。

第25章对商城项目进行一个总体的功能介绍,使用的前端技术、后端技术、后台管理技术及使用的数据库。同时详细讲解后端及数据库的安装步骤。

第26章介绍商城项目创建、项目框架搭建、目录结构分析,以及项目的数据流程分析等内容。

第27章介绍商城项目的颜色、图标、字符串和数据接口等配置项。

第28章介绍商城项目中用到的工具,如路由工具、Token处理工具、随机数工具及颜色转换等工具。

第29章介绍商城项目中用到消息通知类的实现方法,另外通过Flutter自带的HttpClient实现Http请求库的方法。

第30章介绍商城项目中封装的组件,如大中小按钮、圆形复选框、输入框及弹出消息组件等。

第31章介绍商城项目的入口程序与首页处理,包括入口程序、首页拆分、首页分类、首页商品及轮播图等内容。

第32章介绍商城项目的分类模块的数据模型、数据接口、一级分类组件、二级分类组件及分类页面组装的实现过程。

第33章介绍商城项目用户数据模型,以及登录注册页面实现过程。还分析了token的获取与使用。

第34章介绍商城项目中商品详情复杂页面布局、商品相关的数据模型、数据接口及添加至购物车的实现过程。

第35章介绍商城项目中的购物车模块实现过程,同时讲解了购物车与其他模块的关系以及购物商品数量组件的使用。

第36章介绍商城项目中订单列表及订单详情的实现过程,同时详细介绍订单状态及订单详情复杂页面的布局。

第37章介绍商城项目中个人中心实现的过程,同时介绍个人中心页面与其他页面的关系。

阅读建议

本书是一本基础入门加实战的书籍, 既有基础知识, 又有丰富示例, 包括详细的操作步骤, 实操性强。由于Dart语言内容较多, 所以本书对Dart语言的基本概念讲解很详细, 包括基本概念及代码示例。每个知识点都配有小例子, 力求精简, 还提供完整代码, 读者复制完整代码就可以立即看到效果。这样会给读者信心, 在轻松掌握基础知识的同时能够快速进入实战。

本书共分4篇, 建议读者先把第1篇Dart语言的基础理论通读一遍, 并搭建好开发环境, 在第3章编写出第一个 Dart 程序。

第2篇是Dart语言面向对象的一些知识, 掌握这一部分内容可以写出结构清晰的程序,同时还能掌握Dart语言的Mixin(混入)等特性。

第3篇属于Dart进阶内容, 包括异常处理、集合及泛型的使用。这里的异步编程属于 Dart 的核心知识, 可通过示例详细了解 Bloc 设计模式及程序是如何解耦的。

第4 篇属于项目实战部分, 读者在掌握了前面的基础知识后, 可以通过一个商城案例项目来全面掌握Flutter的开发过程。这里建议读者在开发过程中, 如果遇到不熟悉的组件或者第三方库, 则可以先运行小示例后再进行使用。

关于随书代码

本书所列代码力求完整,但由于篇幅所限,代码没有全放在书里。完整代码可扫描下方二维码下载。

本书源代码

致谢

首先感谢清华大学出版社赵佳霓编辑的耐心指点,以及推动本书的出版。

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

由于时间仓促,书中难免存在不妥之处,请读者见谅,并提宝贵意见。

亢少军

2021年10月

目录

第1篇Dart基础

第1章Dart语言简介(7min)

1.1移动端开发

1.2Web开发

1.3服务端开发

第2章开发环境搭建(24min)

2.1Windows环境搭建

2.2macOS环境搭建

第3章第一个Dart程序(7min)

第4章Dart语法基础(8min)

4.1关键字

4.2变量

4.3常量

4.3.1final定义常量

4.3.2const定义常量

4.3.3final和const的区别

第5章编码规范(16min)

5.1样式规范

5.2文档规范

5.3使用规范

5.3.1依赖

5.3.2赋值

5.3.3字符串

5.3.4集合

5.3.5参数

5.3.6变量

5.3.7成员

5.3.8构造方法

5.3.9异常处理

第6章数据类型

6.1Number类型

6.2String类型

6.3Boolean类型

6.4List类型

6.4.1定义List

6.4.2常量List

6.4.3扩展运算符

6.5Set类型

6.6Map类型

第7章运算符(11min)

7.1算术运算符

7.2关系运算符

7.3类型测试操作符

7.4赋值操作符

7.5逻辑运算符

7.6位运算符

7.7条件表达式

7.8级联操作

第8章流程控制语句(16min)

8.1if和else

8.2for循环

8.3while和dowhile

8.4break和continue

8.5switch和case

8.6断言assert

第9章函数(44min)

9.1函数的概念

9.2可选参数

9.2.1命名参数

9.2.2位置参数

9.3参数默认值

9.4main函数

9.5函数作为参数传递

9.6匿名函数

9.7词法作用域

第2篇面向对象编程

第10章面向对象基础(30min)

10.1面向对象概述

10.2面向对象基本特征

10.3类声明及构成

10.3.1类声明

10.3.2成员变量

10.3.3成员方法

10.4静态变量和静态方法

10.4.1静态变量

10.4.2静态方法

10.5枚举类型

第11章对象(57min)

11.1创建对象

11.2对象成员

11.3获取对象类型

11.4构造方法

11.4.1声明构造方法

11.4.2使用构造方法

11.4.3命名构造方法

11.4.4调用父类的非默认构造方法

11.4.5初始化列表

11.4.6重定向构造方法

11.4.7常量构造方法

11.4.8工厂构造方法

11.5Getters和Setters

第12章继承与多态(38min)

12.1Dart中的继承

12.2方法重写

12.2.1基本使用

12.2.2重绘Widget方法

12.2.3重写高级示例

12.3操作符重写

12.4重写noSuchMethod方法

12.5多态

第13章抽象类与接口(21min)

13.1抽象类

13.1.1抽象类的定义格式

13.1.2数据库操作抽象类实例

13.1.3几何图形抽象类

13.2接口

第14章Mixin混入(27min)

14.1Mixin概念

14.2Mixin使用

14.3重名方法处理

14.4Mixin对象类型

第3篇Dart进阶

第15章异常处理

15.1异常概念

15.2抛出异常

15.3捕获异常

15.3.1trycatch语句

15.3.2tryoncatch语句

15.4重新抛出异常

15.5finally语句

15.6自定义异常

15.7Http请求异常

第16章集合

16.1集合简介

16.2List集合

16.2.1常用属性

16.2.2常用方法

16.2.3遍历集合

16.3Set集合

16.3.1常用属性

16.3.2常用方法

16.3.3遍历集合

16.4Map集合

16.4.1常用属性

16.4.2常用方法

16.4.3遍历集合

第17章泛型

17.1语法

17.2泛型的作用

17.2.1类型安全

17.2.2减少重复代码

17.3集合中使用泛型

17.4构造方法中使用泛型

17.5判断泛型对象的类型

17.6限制泛型类型

17.7泛型方法的用法

17.8泛型类的用法

17.9泛型抽象类的用法

第18章异步编程

18.1异步的概念

18.1.1单线程

18.1.2多线程

18.1.3事件循环

18.2Future

18.2.1Dart事件循环 

18.2.2调度任务 

18.2.3延时任务 

18.2.4Future详解 

18.2.5异步处理实例

18.3Stream

18.3.1Stream的概念

18.3.2Stream的分类

18.3.3Stream创建方式

18.3.4Stream操作方法

18.3.5StreamController使用

18.3.6StreamBuilder

18.3.7响应式编程

18.3.8Bloc设计模式

18.3.9Bloc解耦

18.3.10BlocProvider实现 

18.4Isolate

18.4.1创建Isolate

18.4.2使用场景 

第19章网络编程

19.1Http网络请求

19.2HttpClient网络请求

19.3Dio网络请求

19.4Dio文件上传

19.5WebSocket

第20章元数据

20.1元数据的定义

20.2常用的元数据

20.2.1@deprecated

20.2.2@override

20.2.3@required

20.3自定义元数据

20.4元数据应用

第21章Dart库

21.1本地库使用

21.2系统内置库使用

21.3第三方库介绍

21.4库重名与冲突解决

21.5显示或隐藏成员

21.6库的命名与拆分

21.7导出库

第22章数据持久化

22.1键值对存储介绍

22.2共享变量使用

22.3共享变量实现原理

22.4文件存储

22.5Sqflite使用

22.5.1常用操作方法

22.5.2客户表操作示例

第23章Canvas画布

23.1画布与画笔

23.2绘制直线

23.3绘制圆

23.4绘制椭圆

23.5绘制圆角矩形

23.6绘制嵌套矩形

23.7绘制多个点

23.8绘制圆弧

23.9绘制路径Path

第24章Web开发

24.1升级SDK

24.2示例工程

24.3项目分析

24.3.1入口文件

24.3.2界面元素

24.3.3第三方库

第4篇商城项目实战

第25章项目简介

25.1功能介绍

25.2总体架构

25.2.1前端Flutter

25.2.2后端接口Nodejs

25.2.3后端管理React

25.2.4数据库MySQL

25.3后端及数据库准备

25.3.1MySQL安装

25.3.2Node安装

第26章项目框架搭建

26.1新建项目

26.2结构

第27章项目配置

27.1颜色配置

27.2字体样式配置

27.3字符串配置

27.4接口地址配置

27.5导出配置

第28章工具集

28.1路由工具

28.1.1路由参数处理

28.1.2路由工具

28.2Token工具

28.3随机数工具

28.4颜色转换工具

第29章消息通知与数据处理

29.1消息通知

29.2数据中心

29.3Http服务

第30章组件封装

30.1大按钮组件

30.2中等按钮组件

30.3小按钮组件

30.4圆形复选框组件

30.5输入框组件

30.6Logo容器组件

30.7弹出消息组件

第31章入口与首页

31.1入口程序

31.2主页面

31.3首页数据模型

31.4首页布局拆分

31.5轮播图实现

31.6首页分类实现

31.7首页商品实现

31.8组装首页

第32章分类

32.1分类数据模型

32.2一级分类组件实现

32.3二级分类组件实现

32.4组装分类页面

32.5分类商品列表

第33章登录注册

33.1用户数据模型

33.2登录页面实现

33.3注册页面

第34章商品详情

34.1商品详情需求分析

34.2商品详情数据模型

34.3商品详情基本信息

34.4商品详情操作按钮

34.5商品详情页实现

第35章购物车

35.1购物车列表数据模型

35.2购物车页面拆分

35.3计数器组件实现

35.4购物车列表项实现

35.5购物车结算按钮

35.6购物车页面实现

第36章订单

36.1填写订单页面实现

36.2订单数据模型

36.3我的订单页面实现

36.4订单详情页面实现

第37章会员中心

37.1登录和退出处理

37.2页面实现

作者简介

编辑推荐

近些年来,利用跨平台技术来开发 App 在无论是移动端还是桌面端都备受欢迎。《Dart语言实战——基于Flutter框架的程序开发》(第2版)全面讲解跨平台Dart编程语言,是一本基础入门加实战的书籍,既有基础知识,又有丰富示例,包括详细的操作步骤,实操性强。配套的完整商城App实战项目及视频讲解,详细阐述了如何使用Flutter开发App,内容完整,步骤清晰,带你逐步掌握Dart和Flutter开发。

作者寄语

亢少军 资深开发者、创业者,专注于视频通信技术领域。国内首本Flutter书籍《Flutter技术入门与实战》作者。多年从事视频会议、远程教育等技术研发,对于Android、iOS及跨平台开发技术有较深入的研究,并开发了多个应用项目,涉及医疗、交通、银行等领域。

电子资料

www.luweidong.cn

下一个