第1章 开启Flutter之旅 1
1.1 Flutter的特点与核心概念 1
1.1.1一切皆为组件 2
1.1.2组件嵌套 2
1.1.3构建Widget 3
1.1.4处理用户交互 4
1.1.5什么是状态 4
1.1.6分层的框架 5
1.2开发环境搭建 5
1.2.1 Windows环境搭建 5
1.2.2 MacOS环境搭建 11
1.3第一个Flutter程序 17
第2章 Flutter基础知识 23
2.1入口程序 23
2.2 Material Design设计风格 24
2.3 Flutter主题 24
2.3.1创建应用主题 24
2.3.2局部主题 26
2.3.3使用主题 27
2.4无状态组件和有状态组件 28
2.5使用包资源 31
2.6 Http请求 34
第3章 Dart语言简述 40
3.1 Dart重要概念与常用开发库 40
3.2变量与基本数据类型 43
3.3函数 46
3.4运算符 47
3.5流程控制语句 51
3.6异常处理 54
3.7面向对象 55
3.7.1实例化成员变量 55
3.7.2构造函数 56
3.7.3读取和写入对象 57
3.7.4重载操作 58
3.7.5继承类 59
3.7.6 抽象类 60
3.7.7枚举类型 62
3.7.8 Mixins 62
3.8泛型 63
3.9库的使用 64
3.10异步支持 65
3.11元数据 65
3.12注释 67
第4章 常用组件 68
4.1容器组件 68
4.2图片组件 70
4.3文本组件 72
4.4图标及按钮组件 74
4.4.1图标组件 74
4.4.2图标按钮组件 75
4.4.3凸起按钮组件 77
4.5列表组件 78
4.5.1基础列表组件 78
4.5.2水平列表组件 80
4.5.3长列表组件 82
4.5.4网格列表组件 83
4.6表单组件 84
第5章 Material Design风格组件 88
5.1 App结构和导航组件 89
5.1.1 MaterialApp(应用组件) 89
5.1.2 Scaffold(脚手架组件) 94
5.1.3 AppBar(应用按钮组件) 95
5.1.4 BottomNavigationBar(底部导航条组件) 97
5.1.5 TabBar(水平选项卡及视图组件) 99
5.1.6 Drawer(抽屉组件) 104
5.2按钮和提示组件 107
5.2.1 FloatingActionButton(悬停按钮组件) 107
5.2.2 FlatButton(扁平按钮组件) 109
5.2.3 PopupMenuButton(弹出菜单组件) 110
5.2.4 SimpleDialog(简单对话框组件) 112
5.2.5 AlertDialog(提示对话框组件) 113
5.2.6 SnackBar(轻量提示组件) 115
5.3其他组件 116
5.3.1 TextField(文本框组件) 117
5.3.2 Card(卡片组件) 119
第6章 Cupertino风格组件 122
6.1 CupertinoActivityIndicator组件 122
6.2 CupertinoAlertDialog对话框组件 123
6.3 CupertinoButton按钮组件 124
6.4 Cupertino导航组件集 125
第7章 页面布局 132
7.1基础布局处理 133
7.1.1 Container(容器布局) 133
7.1.2 Center(居中布局) 137
7.1.3 Padding(填充布局) 138
7.1.4 Align(对齐布局) 140
7.1.5 Row(水平布局) 143
7.1.6 Column(垂直布局) 144
7.1.7 FittedBox(缩放布局) 146
7.1.8 Stack/Alignment 149
7.1.9 Stack/Positioned 151
7.1.10 IndexedStack 153
7.1.11 OverflowBox(溢出父容器显示) 155
7.2宽高尺寸处理 156
7.2.1 SizedBox(设置具体尺寸) 156
7.2.2 ConstrainedBox(限定最大最小宽高布局) 158
7.2.3 LimitedBox(限定最大宽高布局) 159
7.2.4 AspectRatio(调整宽高比) 160
7.2.5 FractionallySizedBox(百分比布局) 162
7.3列表及表格布局 163
7.3.1 ListView 164
7.3.2 GridView 166
7.3.3 Table 167
7.4其他布局处理 169
7.4.1 Transform(矩阵转换) 169
7.4.2 Baseline(基准线布局) 171
7.4.3 Offstage(控制是否显示组件) 172
7.4.4 Wrap(按宽高自动换行布局) 174
7.5布局综合示例 177
7.5.1布局分析 177
7.5.2准备素材 179
7.5.3编写代码 180
第8章 手势 185
8.1用GestureDetector进行手势检测 185
8.2用Dismissible实现滑动删除 187
第9章 资源和图片 190
9.1添加资源和图片 190
9.1.1指定assets 190
9.1.2加载assets 191
9.1.3平台assets 193
9.2自定义字体 195
第10章 路由及导航 198
10.1页面跳转基本使用 198
10.2页面跳转发送数据 201
10.3页面跳转返回数据 204
第11章 组件装饰和视觉效果 208
11.1 Opacity(透明度处理) 208
11.2 DecoratedBox(装饰盒子) 210
11.3 RotatedBox(旋转盒子) 217
11.4 Clip(剪裁处理) 217
11.5案例——自定义画板 222
第12章 动画 241
12.1用AnimatedOpacity实现渐变效果 241
12.2用Hero实现页面切换动画 243
第13章 Flutter插件开发 246
13.1新建插件 246
13.2运行插件 249
13.3示例代码分析 250
第14章 开发工具及使用技巧 259
14.1 IDE集成开发环境 259
14.1.1 Android Studio/IntelliJ 259
14.1.2 Visual Studio Code 267
14.2 Flutter SDK 274
14.3使用热重载 275
14.4格式化代码 276
14.5 Flutter组件检查器 278
第15章 测试与发布应用 281
15.1测试应用 281
15.1.1简介 281
15.1.2单元测试 282
15.1.3 Widget测试 283
15.1.4集成测试 284
15.2发布Android版App 286
15.2.1检查App Manifest 287
15.2.2查看构建配置 287
15.2.3添加启动图标 288
15.2.4 App签名 290
15.2.5构建发布版APK并安装在设备上 291
15.3发布iOS版App 291
15.3.1准备工作 291
15.3.2在iTunes Connect上注册用程序 292
15.3.3注册一个Bundle ID 292
15.3.4在iTunes Connect上创建应用程序记录 293
15.3.5查看Xcode项目设置 294
15.3.6添加应用程序图标 295
15.3.7准备发布版本 297
15.3.8将应用发布到App Store 300
第16章 综合案例——即时通讯App界面实现 301
16.1项目介绍 301
16.2项目搭建 302
16.2.1新建项目 302
16.2.2添加源码目录及文件 305
16.3入口程序 306
16.4加载页面 307
16.5应用页面 309
16.6搜索页面 316
16.6.1布局拆分 316
16.6.2请求获取焦点 316
16.6.3自定义TouchCallBack组件 316
16.6.4返回文本组件 318
16.6.5组装实现搜索页面 318
16.7聊天页面 321
16.7.1准备聊天消息数据 321
16.7.2聊天消息列表项实现 322
16.7.3聊天消息列表实现 325
16.8好友页面 325
16.8.1准备好友列表数据 326
16.8.2好友列表项实现 327
16.8.3好友列表头实现 329
16.8.4 ContactSiderList类 329
16.8.5 Contacts类 332
16.9我的页面 333
16.9.1通用列表项实现 334
16.9.2 Personal类 335