图书目录

目   录

第1章  Flutter开发环境搭建 1

1.1  认识Flutter 1

1.1.1  Flutter的前世今生与应用场景 2

1.1.2  安装Flutter开发框架 2

1.2  配置iOS开发环境 3

1.2.1  进行AppID的申请 4

1.2.2  获取Xcode开发工具 4

1.3  配置Android开发环境 5

1.3.1  获取Android Studio开发工具 5

1.3.2  为Android Studio添加Flutter插件 7

1.4  你的第一个Flutter应用 9

第2章  Dart语言基础 12

2.1  Dart开发环境搭建 13

2.1.1  安装Dart SDK 13

2.1.2  配置Dart编辑器 14

2.2  Dart中的变量 17

2.2.1  使用变量 17

2.2.2  不可变变量 18

2.3  Dart中的内置数据类型 18

2.3.1  数值类型 18

2.3.2  字符串类型 21

2.3.3  布尔类型 23

2.3.4  列表类型 23

2.3.5  字典类型 25

2.4  Dart中的运算符 26

2.4.1  算数运算符 27

2.4.2  比较运算符 28

2.4.3  类型运算符 28

2.4.4  复合运算符 29

2.4.5  逻辑运算符 29

2.4.6  位运算符 30

2.4.7  条件运算符 31

2.4.8  级联运算符 32

2.4.9  点运算符 33

2.5  Dart中的流程控制语句 33

2.5.1  条件分支语句 33

2.5.2  循环语句 35

2.5.3  中断语句 36

2.5.4  多分支选择语句 37

2.5.5  异常处理 39

第3章  Dart高级进阶 42

3.1  使用函数 43

3.1.1  关于main函数 43

3.1.2  自定义函数 43

3.1.3  定义可选参数的函数 45

3.1.4  函数可选参数的默认值 46

3.1.5  匿名函数 47

3.1.6  词法作用域 47

3.1.7  关于闭包 48

3.2  Dart中的类 49

3.2.1  自定义类与构造方法 49

3.2.2  实例方法 51

3.2.3  抽象类与抽象方法 53

3.2.4  类的继承 54

3.2.5  运算符重载 55

3.2.6  noSuchMethod方法 56

3.2.7  枚举类型 57

3.2.8  扩展类的功能——Mixin特性 58

3.2.9  类属性与类方法 61

3.3  泛型 61

3.3.1  使用泛型 62

3.3.2  约束泛型与泛型函数 63

3.4  异步编程技术 64

3.4.1  async与await关键字 64

3.4.2  异步与回调 65

3.4.3  使用Future对象 66

3.5  模块的使用 67

3.5.1  模块的应用 67

3.5.2  模块命名 68

3.6  可调用类与注释 69

3.6.1  可调用类 69

3.6.2  关于注释 69

第4章  Flutter基础组件 71

4.1  Image图片组件的应用 71

4.1.1  图片资源的加载 72

4.1.2  Image组件的属性配置 73

4.1.3  关于Alignment对象 75

4.1.4  关于BoxFit对象 75

4.1.5  关于ImageRepeat对象 76

4.2  Text文本组件的应用 76

4.2.1  使用Text组件 76

4.2.2  自定义文本风格 77

4.3  Icon图标组件的应用 78

4.3.1  使用Icon组件 79

4.3.2  Flutter内置的Icon样式 79

4.4  按钮相关组件的应用 80

4.4.1  按钮组件的基类MaterialButton 81

4.4.2  RaisedButton的应用 81

4.4.3  FlatButton的应用 81

4.4.4  下拉选择按钮DropdownButton组件的应用 82

4.4.5  悬浮按钮组件的应用 84

4.4.6  图标按钮IconButton组件的应用 85

4.5  界面脚手架Scaffold组件 86

4.5.1  Scaffold组件概览 86

4.5.2  Scaffold属性使用示例 86

4.5.3  AppBar组件的应用 87

4.5.4  使用ButtomNavigationBar组件 88

4.6  FlutterLogo组件的应用 90

4.7  Placeholder占位符组件的应用 91

4.8  单组件布局容器组件的应用 91

4.8.1  Container容器组件 91

4.8.2  Padding容器组件 95

4.8.3  Center容器组件 95

4.8.4  Align容器组件 96

4.8.5  FittedBox容器组件 97

4.8.6  AspectRatio容器组件 97

4.8.7  ConstrainedBox容器组件 98

4.8.8  IntrinsicHeight与IntrinsicWidth容器 98

4.8.9  LimitedBox容器 99

4.8.10  Offstage容器 99

4.8.11  OverflowBox容器 99

4.8.12  SizeBox容器 100

4.8.13  Transform容器组件 100

4.9  多组件布局容器组件的应用 101

4.9.1  Row容器组件 101

4.9.2  Column容器组件 102

4.9.3  Flex与Expanded组件 103

4.9.4  Stack与Positioned容器组件 104

4.9.5  IndexedStack容器组件 105

4.9.6  Wrap容器组件 106

4.9.7  更多内容可滚动的布局容器 107

第5章  Flutter组件进阶 108

5.1  表单组件的应用 108

5.1.1  关于表单容器 108

5.1.2  TextFormField详解 109

5.1.3  关于InputDecoration类 112

5.1.4  下拉选择框DropdownButtonFormField组件的应用 113

5.1.5  RawKeyboardListener自定义组件接收键盘事件 113

5.2  Flutter布局技术 114

5.2.1  再看Container容器组件 114

5.2.2  Padding布局 116

5.2.3  Center布局 117

5.2.4  FittedBox布局 118

5.2.5  ConstrainedBox布局 118

5.2.6  抽屉布局 119

5.3  高级用户交互组件 120

5.3.1  复选按钮Checkbox组件 120

5.3.2  单选按钮Radio组件 121

5.3.3  切换按钮Switch组件 122

5.3.4  滑块按钮Slider组件的应用 123

5.3.5  日期时间选择弹窗 124

5.3.6  各种样式的弹窗组件 127

5.3.7  扩展面板组件的应用 130

5.3.8  按钮组相关组件 131

5.3.9  Card组件 133

5.3.10  指示类视图组件 135

5.4  对组件进行绘制与修饰 136

5.4.1  Opacity组件 136

5.4.2  DecoratedBox组件 137

5.4.3  裁剪相关组件 137

5.4.4  CustomPaint组件 140

5.5  内容可滚动组件 144

5.5.1  GridView组件的应用 144

5.5.2  ListView组件的应用 148

5.5.3  SingleChildScrollView组件的应用 148

5.5.4  Table组件的应用 149

5.5.5  Flow流式布局组件 150

第6章  动画与手势 152

6.1  补间动画的应用 152

6.1.1  关于Animation对象 153

6.1.2  AnimationController动画控制器 153

6.1.3  Tween补间对象 154

6.1.4  线性动画与曲线动画 158

6.1.5  Curve时间曲线函数 159

6.1.6  动画组件 161

6.1.7  同时执行多个动画 162

6.1.8  更多补间动画 163

6.2  物理动画的应用 164

6.2.1  摩擦减速动画示例 164

6.2.2  弹簧减速动画示例 166

6.2.3  重力动画示例 167

6.3  列表动画 168

6.3.1  关于AnimatedList类 168

6.3.2  进行列表操作动画 168

6.4  使用帧动画 170

6.4.1  一个简单的帧动画示例 170

6.4.2  GIF图——另一种帧动画 172

6.5  共享元素的动画 173

6.5.1  共享元素动画示例 173

6.5.2  关于Hero对象 175

6.6  Lottie动画 175

6.6.1  引入lottie_flutter插件 175

6.6.2  使用Lottie动画 176

6.7  Flare动画 178

6.7.1  引入Flare插件 178

6.7.2  使用Flare动画 179

6.8  手势交互 180

6.8.1  触摸事件 180

6.8.2  手势事件 182

6.8.3  下拉刷新与上拉加载 183

第7章  网络技术与数据解析 185

7.1  Flutter中的网络技术 186

7.1.1  使用互联网上的接口服务 186

7.1.2  使用HTTPClient进行网络请求 187

7.1.3  HttpClient相关方法 188

7.1.4  关于HttpClientRequest请求对象 190

7.1.5  关于HttpClientResponse回执对象 191

7.1.6  请求方法 192

7.2  JSON数据解析 193

7.2.1  手动解析JSON数据 193

7.2.2  将网络数据渲染到页面 194

7.3  数据持久化存储 197

7.3.1  插件的使用 197

7.3.2  使用shared_preferences插件 199

7.3.3  进行文件的读写 201

7.4  Flutter中的页面切换 203

7.4.1  使用Navigator进行页面跳转 203

7.4.2  正向页面传值 205

7.4.3  反向页面传值 208

第8章  用Flutter进行新闻客户端的开发 210

8.1  新闻客户端需求分析与开发前的准备 210

8.1.1  新闻客户端应用需要具备的功能 210

8.1.2  开发前的技术准备 211

8.1.3  应用项目搭建 212

8.2  新闻客户端主页的开发 215

8.2.1  搭建首页框架 215

8.2.2 “热门新闻”页面开发 217

8.2.3  开发下拉刷新与上拉加载更多功能 220

8.3  首页网络请求与数据填充 223

8.3.1  进行首页数据请求 223

8.3.2  定义数据模型与数据解析 224

8.3.3  填充首页数据 226

8.4  分类模块的开发 229

8.4.1  新闻分类主页开发 229

8.4.2  开发分类列表 231

8.5  新闻详情页开发 236

8.5.1  使用flutter_native_web插件进行网页渲染 236

8.5.2  添加收藏功能 239

8.5.3  实现收藏列表 241

第9章  用Flutter开发“棍子传奇”小游戏 245

9.1  游戏开始页面开发 245

9.1.1  在Flutter中引入自定义字体 245

9.1.2  游戏首页的搭建 246

9.2  游戏核心逻辑开发 251

9.2.1  “棍子”道具开发 252

9.2.2  英雄移动与胜负判定 253

9.2.3  游戏的循环机制 257

9.2.4  对游戏进行计分 259

9.2.5  游戏的重开 259

9.3  对游戏体验进行优化 261

9.3.1  为游戏添加音效 261

9.3.2  修改应用图标 262

9.3.3  更多可优化的方向 264

第10章  将Flutter用于iOS、Android项目和Web应用程序 265

10.1  将Flutter模块植入已有的iOS工程中 265

10.1.1  将Flutter模块集成进iOS原生项目 265

10.1.2  在iOS原生工程中打开Flutter页面 268

10.2  将Flutter模块植入已有的Android工程中 270

10.2.1  集成Flutter模块到Android原生项目 270

10.2.2  在Android原生页面中打开Flutter页面 274

10.3  使用Flutter开发Web应用程序 275

10.3.1  运行第一个Flutter Web应用程序 276

10.3.2  将Flutter移动端工程修改为Web应用程序 277