目录 Contents 第1章 初识Flutter1 1.1 Flutter简介 1 1.1.1 Flutter诞生历史2 1.1.2 Flutter优势2 1.1.3 Flutter版本3 1.2 Flutter框架 4 1.2.1 Flutter Framework4 1.2.2 Flutter Engine5 1.2.3 Flutter Embedder5 第2章 Flutter快速上手6 2.1 Flutter环境搭建 6 2.1.1 Android环境6 2.1.2 iOS环境8 2.1.3 获取Flutter SDK9 2.2 开发工具 10 2.2.1 VS Code10 2.2.2 Android Studio11 2.3 Flutter项目示例 12 2.3.1 初始化项目13 2.3.2 项目结构14 2.3.3 运行项目14 2.3.4 程序调试15 2.3.5 体验热重载16 2.3.6 包管理17 2.4 习题 19 第3章 Dart语言基础20 3.1 Dart入门 20 3.1.1 安装Dart SDK20 3.1.2 编写Hello World21 3.2 变量与常量 21 3.2.1 变量21 3.2.2 常量22 3.3 内置类型 22 3.3.1 数值类型22 3.3.2 字符串类型23 3.3.3 布尔类型23 3.3.4 数组23 3.3.5 集合24 3.3.6 Map24 3.3.7 Runes25 3.3.8 Symbols25 3.4 函数 25 3.4.1 参数26 3.4.2 main()函数26 3.4.3 匿名函数26 3.4.4 闭包函数27 3.4.5 返回值27 3.5 类 28 3.5.1 类的成员28 3.5.2 构造函数28 3.5.3 接口与抽象类29 3.6 空安全 29 3.6.1 启用空安全29 3.6.2 空和非空30 3.6.3 空断言操作符30 3.6.4 类型提升30 3.6.5 late关键字31 3.7 异步编程 31 3.7.1 同步和异步编程31 3.7.2 Isolate32 3.7.3 Future33 3.7.4 async/await34 3.7.5 Stream35 3.8 异常 37 3.9 习题 38 第4章 Flutter组件40 4.1 计数器应用 40 4.2 组件基础知识 41 4.2.1 Widget简介41 4.2.2 StatelessWidget42 4.2.3 StatefulWidget43 4.2.4 MaterialApp45 4.2.5 State45 4.3 容器组件 47 4.3.1 Container47 4.3.2 Scaffold49 4.3.3 DecoratedBox50 4.4 功能组件 52 4.4.1 Text52 4.4.2 Button53 4.4.3 TextField54 4.4.4 Image56 4.5 布局开发 58 4.5.1 布局模型与约束58 4.5.2 线性布局59 4.5.3 弹性布局60 4.5.4 流式布局61 4.5.5 层叠布局64 4.6 可滚动组件 66 4.6.1 Sliver布局模型66 4.6.2 SingleChildScrollView67 4.6.3 ListView68 4.6.4 滚动监听70 4.6.5 PageView73 4.6.6 CustomScrollView75 4.7 习题 78 第5章 事件处理79 5.1 指针事件 79 5.1.1 基本概念79 5.1.2 Listener组件80 5.1.3 忽略指针事件81 5.2 手势识别 81 5.2.1 基本概念81 5.2.2 常用事件82 5.2.3 手势识别器83 5.3 手势竞争与手势冲突 86 5.3.1 手势竞争86 5.3.2 手势冲突87 5.4 事件总线 89 5.5 习题 92 第6章 动画93 6.1 动画基础 93 6.2 动画API 94 6.2.1 Animation94 6.2.2 AnimationController95 6.2.3 Curve95 6.2.4 Tween96 6.2.5 综合示例97 6.3 Hero动画 99 6.4 交织动画 100 6.5 Rive动画 103 6.6 习题 108 第7章 路由与导航110 7.1 路由基础 110 7.1.1 基本概念110 7.1.2 路由使用111 7.1.3 命名路由112 7.1.4 路由传参113 7.1.5 路由嵌套115 7.2 路由栈管理 116 7.2.1 路由栈简介116 7.2.2 pushReplacement117 7.2.3 pushAndRemove-Until117 7.2.4 popUntil118 7.3 自定义路由 119 7.3.1 自定义路由动画119 7.3.2 Fluro120 7.4 习题 123 第8章 网络编程124 8.1 网络基础 124 8.1.1 HTTP124 8.1.2 HTTPS126 8.1.3 GET与POST127 8.2 网络请求 128 8.2.1 HttpClient128 8.2.2 http129 8.2.3 dio130 8.3 JSON解析 133 8.3.1 手动解析133 8.3.2 自动解析135 8.4 异步编程 137 8.4.1 事件循环137 8.4.2 Isolate139 8.4.3 线程管理143 8.4.4 事件流145 8.4.5 FutrueBuilder146 8.5 习题 148 第9章 数据存储149 9.1 SharedPreterences存储 149 9.1.1 基本操作149 9.1.2 综合示例150 9.2 SQLite存储 152 9.2.1 基本操作152 9.2.2 数据库工具类157 9.2.3 综合示例159 9.3 文件存储 161 9.3.1 基本概念161 9.3.2 文件操作工具类163 9.3.3 综合示例164 9.4 习题 168 第10章 主题与国际化169 10.1 应用主题 169 10.1.1 Theme与ThemeData169 10.1.2 全局主题170 10.1.3 局部主题171 10.1.4 主题换肤172 10.2 多语言支持 174 10.2.1 支持国际化174 10.2.2 自定义Delegate176 10.3 Intl国际化 178 10.3.1 安装Intl插件178 10.3.2 创建语言文件179 10.3.3 实现国际化180 10.4 习题 181 第11章 混合开发182 11.1 混合开发简介 182 11.2 集成Flutter 183 11.2.1 Flutter模块183 11.2.2 原生Android集成Flutter184 11.2.3 原生iOS集成Flutter186 11.2.4 热重载与调试190 11.3 与原生平台通信 191 11.3.1 混合工程通信191 11.3.2 BasicMessage-Channel192 11.3.3 MethodChannel195 11.3.4 EventChannel198 11.4 混合路由栈管理 201 11.4.1 混合路由导航201 11.4.2 原生导航到Flutter202 11.4.3 Flutter导航到原生203 11.5 FlutterBoost 206 11.5.1 FlutterBoost简介206 11.5.2 原生Android集成FlutterBoost206 11.5.3 原生iOS集成FlutterBoost209 11.5.4 路由API211 11.5.5 生命周期函数213 11.6 Flutter插件开发 214 11.6.1 新建插件项目214 11.6.2 示例插件215 11.6.3 插件开发217 11.6.4 运行插件221 11.6.5 发布插件221 11.7 习题 222 第12章 Flutter Web224 12.1 Flutter Web简介 224 12.2 Flutter Web实战 226 12.2.1 项目创建与运行226 12.2.2 调试项目226 12.2.3 打包与部署228 12.3 Flutter Desk实战 230 12.3.1 Flutter Desk简介230 12.3.2 Flutter Desk实战231 12.3.3 Flutter Desk打包232 12.4 Fair动态化 235 12.4.1 Fair简介235 12.4.2 接入Fair236 12.4.3 热更新体验237 12.4.4 热更新平台239 12.4.5 热更新API242 12.4.6 Fair原理244 12.5 习题 246 第13章 书旗小说应用实战247 13.1 项目背景 247 13.2 项目搭建 248 13.2.1 创建项目248 13.2.2 构建主框架249 13.2.3 网络请求251 13.2.4 网页组件251 13.2.5 接入tts253 13.3 书架 254 13.3.1 阅读记录254 13.3.2 我的书架255 13.3.3 书架管理257 13.3.4 确认弹框260 13.3.5 推荐图书列表262 13.4 图书搜索 263 13.5 书城 266 13.5.1 书城分类266 13.5.2 轮播图267 13.5.3 图书分类268 13.6 图书详情 270 13.6.1 图书简介270 13.6.2 图书章节271 13.6.3 书友评论272 13.6.4 发布评论274 13.7 阅读器开发 274 13.7.1 创建操作栏274 13.7.2 阅读器翻页276 13.7.3 下拉菜单276 13.7.4 黑白模式277 13.8 性能分析与优化 279 13.8.1 检测工具279 13.8.2 GPU问题分析281 13.8.3 UI问题分析283 13.8.4 布局优化284 13.8.5 内存优化285 第14章 打包与发布286 14.1 应用配置 286 14.1.1 配置启动页286 14.1.2 更改默认配置288 14.2 Android发布 289 14.2.1 创建签名文件289 14.2.2 制作签名包291 14.3 iOS发布 291 14.3.1 加入苹果开发者计划291 14.3.2 添加证书配置292 14.3.3 注册App ID294 14.3.4 使用Xcode打包294 14.3.5 发布iOS包297