| 作者 |
| 杜文 亢少军 |
| 丛书名 |
| 移动应用开发技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9782004091495 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------Flutter实战--------------------------- 本书由浅入深的介绍了Flutter技术和开发流程。本书包含不仅包含大量示例、图片,还有配套的示例源码,可帮助读者循序渐进的掌握Flutter开发技术。本书分为入门、进阶、实例三大篇,其中入门篇(第1章~第7章)主要介绍了Flutter技术产生的背景、常用的组件以及布局方式,通过入门篇的学习,读者可以掌握如何使用Flutter来构建UI界面。进阶篇(第8章~第14章),包括Flutter中的事件机制、动画、自定义组件、文件和网络、插件、国际化以及Flutter核心原理等。通过本章内容,读者可以对Flutter整体构建及原理有一个深入的认识。实例篇(第15张),本章主要通过一个简版的Github APP来将前面介绍的内容串起来,让开发者对一个完整的Flutter APP开发流有个了解。 ---------------------------Flutter技术入门与实战 第2版--------------------------- 《Flutter技术入门与实战》自2019年1月出版后,已经调拨7000+册,由于软件版本更新快,第2版根据最新版本对代码进行了全面更新,并增加了动画案例、插件理论和案例、Dio网络请求、Fluro企业级路由、Provider状态管理等,本书内容全面、案例丰富,对代码进行了大量注释,最后还有综合案例分析,可帮助初学者快速掌握这个跨平台框架。 |
| 目录 |
---------------------------Flutter实战--------------------------- 前 言 第一篇 入门篇 第1章 起步 2 1.1 移动开发技术简介 2 1.1.1 原生开发与跨平台技术 2 1.1.2 Hybrid技术简介 3 1.1.3 React Native、Weex及快应用 5 1.1.4 QT Mobile 7 1.1.5 Flutter问世 8 1.1.6 总结 9 1.2 初识Flutter 10 1.2.1 Flutter简介 10 1.2.2 Flutter框架结构 12 1.2.3 如何学习Flutter 13 1.3 搭建Flutter开发环境 14 1.3.1 安装Flutter 14 1.3.2 IDE配置与使用 19 1.3.3 连接设备运行Flutter应用 21 1.3.4 Android Studio常见配置问题 24 1.4 Dart语言简介 26 1.4.1 变量声明 27 1.4.2 函数 28 1.4.3 异步支持 30 1.4.4 Stream 34 1.4.5 Dart与Java及JavaScript的对比 35 第2章 第一个Flutter应用 36 2.1 计数器应用示例 36 2.1.1 创建Flutter应用模板 36 2.1.2 首页 39 2.2 路由管理 42 2.2.1 一个简单示例 43 2.2.2 MaterialPageRoute 44 2.2.3 Navigator 45 2.2.4 路由传值 45 2.2.5 命名路由 47 2.2.6 路由生成钩子 50 2.2.7 总结 50 2.3 包管理 51 2.4 资源管理 55 2.5 调试Flutter应用 60 2.6 Flutter异常捕获 67 2.6.1 Dart单线程模型 67 2.6.2 异常捕获 69 第3章 基础组件 73 3.1 Widget简介 73 3.1.1 概念 73 3.1.2 Widget与Element 73 3.1.3 Widget主要接口 74 3.1.4 StatelessWidget 75 3.1.5 StatefulWidget 77 3.1.6 State 78 3.1.7 在Widget树中获取State对象 84 3.1.8 Flutter SDK内置组件库介绍 85 3.2 状态管理 87 3.2.1 Widget管理自身状态 88 3.2.2 父Widget管理子Widget的状态 89 3.2.3 混合状态管理 91 3.2.4 全局状态管理 93 3.3 文本及样式 94 3.3.1 Text 94 3.3.2 TextStyle 95 3.3.3 TextSpan 95 3.3.4 DefaultTextStyle 96 3.3.5 字体 97 3.4 按钮 99 3.4.1 Material组件库中的按钮 99 3.4.2 自定义按钮外观 100 3.5 图片及ICON 102 3.5.1 图片 102 3.5.2 ICON 107 3.6 单选开关和复选框 109 3.6.1 属性及外观 110 3.6.2 总结 110 3.7 输入框及表单 110 3.7.1 TextField 110 3.7.2 Form 118 3.8 进度指示器 122 3.8.1 LinearProgressIndicator 122 3.8.2 CircularProgressIndicator 123 3.8.3 自定义尺寸 124 3.8.4 颜色动画 125 3.8.5 自定义进度指示器样式 126 第4章 布局类组件 127 4.1 布局类组件简介 127 4.2 线性布局(Row和Column) 128 4.3 弹性布局(Flex) 133 4.4 流式布局 136 4.4.1 Wrap 136 4.4.2 Flow 137 4.5 层叠布局 139 4.6 对齐与相对定位(Align) 141 4.6.1 Align 142 4.6.2 Align与Stack对比 144 4.6.3 Center组件 145 第5章 容器类组件 146 5.1 填充(Padding) 146 5.2 尺寸限制类容器 147 5.2.1 ConstrainedBox 147 5.2.2 SizedBox 148 5.2.3 多重限制 149 5.2.4 UnconstrainedBox 150 5.2.5 其他尺寸限制类容器 152 5.3 装饰容器(DecoratedBox) 152 5.4 变换(Transform) 153 5.5 Container 156 5.6 Scaffold、AppBar和底部导航 158 5.6.1 Scaffold 158 5.6.2 AppBar 160 5.6.3 抽屉菜单 163 5.6.4 FloatingActionButton 165 5.6.5 底部导航栏 165 5.7 剪裁(Clip) 166 第6章 可滚动组件 169 6.1 可滚动组件简介 169 6.2 SingleChildScrollView 171 6.3 ListView 172 6.4 GridView 179 6.5 CustomScrollView 184 6.6 滚动监听及控制 187 6.6.1 ScrollController 187 6.6.2 滚动监听 191 第7章 功能型组件 194 7.1 导航返回拦截(WillPopScope) 194 7.2 数据共享(InheritedWidget) 195 7.3 跨组件状态共享(Provider) 200 7.4 颜色和主题 210 7.4.1 颜色 210 7.4.2 主题 212 7.5 异步UI更新 215 7.5.1 FutureBuilder 216 7.5.2 StreamBuilder 218 7.6 对话框详解 219 7.6.1 使用对话框 219 7.6.2 打开动画及遮罩 224 7.6.3 对话框实现原理 226 7.6.4 对话框状态管理 227 7.6.5 其他类型的对话框 235 第二篇 进阶篇 第8章 事件处理与通知 242 8.1 原始指针事件处理 242 8.2 手势识别 245 8.2.1 GestureDetector 245 8.2.2 GestureRecognizer 249 8.2.3 手势竞争与冲突 251 8.3 事件总线 253 8.4 Notification 255 第9章 动画 261 9.1 Flutter动画简介 261 9.2 动画基本结构及状态监听 265 9.2.1 动画基本结构 265 9.2.2 动画状态监听 270 9.3 自定义路由切换动画 270 9.4 Hero动画 273 9.5 交织动画 275 9.6 通用切换动画组件 278 9.6.1 AnimatedSwitcher 279 9.6.2 AnimatedSwitcher的高级用法 282 9.7 动画过渡组件 286 9.7.1 自定义动画过渡组件 286 9.7.2 Flutter预置的动画过渡组件 293 第10章 自定义组件 297 10.1 自定义组件方法简介 297 10.2 组合现有组件 298 10.3 组合实例:TurnBox 301 10.4 自绘组件(CustomPaint与Canvas) 305 10.5 自绘实例:圆形背景渐变进度条 309 第11章 文件操作与网络请求 318 11.1 文件操作 318 11.2 通过HttpClient发起HTTP请求 320 11.3 dio HTTP请求库 327 11.4 示例:HTTP分块下载 329 11.5 使用WebSockets 334 11.6 使用Socket API 338 11.7 JSON转Dart Model类 338 第12章 包与插件 348 12.1 开发Package 348 12.2 插件开发:平台通道简介 352 12.3 开发Flutter插件 355 12.4 插件开发:Android端API实现 357 12.5 插件开发:iOS端API实现 360 12.6 Texture和PlatformView 364 12.6.1 Texture(示例:使用摄像头) 364 12.6.2 PlatformView(示例:WebView) 373 第13章 国际化 375 13.1 让APP支持多语言 375 13.2 实现Localizations 379 13.3 使用Intl包 381 13.4 国际化中的常见问题 386 第14章 Flutter核心原理 388 14.1 Flutter UI系统 388 14.2 Element与BuildContext 390 14.2.1 Element 390 14.2.2 BuildContext 391 14.3 RenderObject和RenderBox 395 14.3.1 布局过程 395 14.3.2 绘制过程 398 14.3.3 命中测试 401 14.3.4 语义化 402 14.3.5 总结 403 14.4 Flutter运行机制:从启动到显示 403 14.5 图片加载原理与缓存 410 14.5.1 ImageProvider 410 14.5.2 Image组件原理 418 第三篇 实例篇 第15章 一个完整的Flutter应用 422 15.1 GitHub客户端示例 422 15.2 Flutter APP代码结构 423 15.3 Model类定义 424 15.4 全局变量及共享状态 427 15.4.1 全局变量:Global类 427 15.4.2 共享状态 428 15.5 网络请求封装 430 15.5.1 网络接口缓存 430 15.5.2 封装网络请求 433 15.6 APP入口及主页 435 15.6.1 APP入口 435 15.6.2 主页 437 15.6.3 抽屉菜单 443 15.7 登录页 446 15.8 多语言和多主题 449 15.8.1 语言选择页 449 15.8.2 主题选择页 451 参考文献 452 ---------------------------Flutter技术入门与实战 第2版--------------------------- 第2版前言 第1章 开启Flutter之旅 1 1.1 Flutter的特点与核心概念 1 1.1.1 一切皆为组件 2 1.1.2 组件嵌套 2 1.1.3 构建 3 1.1.4 处理用户交互 3 1.1.5 状态 4 1.1.6 分层的框架 5 1.2 搭建开发环境 6 1.2.1 Windows环境搭建 6 1.2.2 MacOS环境搭建 12 1.3 写第一个Flutter程序 16 第2章 Flutter基础知识 22 2.1 入口程序 22 2.2 Material Design设计风格 23 2.3 Flutter主题 23 2.3.1 创建应用主题 23 2.3.2 局部主题 25 2.3.3 使用主题 26 2.4 使用包资源 27 2.5 状态管理 31 2.5.1 有状态及无状态组件 31 2.5.2 Provider的使用 33 2.6 HTTP请求 36 2.6.1 HTTP请求方式 37 2.6.2 HttpClient请求方式 38 2.6.3 Dio请求方式 39 第3章 Dart语言简述 47 3.1 Dart的重要概念与常用开发库 47 3.2 变量与基本数据类型 50 3.3 函数 52 3.4 运算符 54 3.5 流程控制语句 58 3.6 异常处理 61 3.7 面向对象 62 3.7.1 实例化成员变量 62 3.7.2 构造函数 63 3.7.3 读取和写入对象 64 3.7.4 重载操作 65 3.7.5 继承类 66 3.7.6 抽象类 67 3.7.7 枚举类型 68 3.7.8 Mixins 69 3.8 泛型 69 3.9 库的使用 70 3.10 异步支持 71 3.11 元数据 71 3.12 注释 73 第4章 常用组件 75 4.1 容器组件 75 4.2 图片组件 77 4.3 文本组件 79 4.4 图标及按钮组件 81 4.4.1 图标组件 81 4.4.2 图标按钮组件 82 4.4.3 凸起按钮组件 83 4.5 列表组件 84 4.5.1 基础列表组件 85 4.5.2 水平列表组件 86 4.5.3 长列表组件 88 4.5.4 网格列表组件 89 4.6 表单组件 90 第5章 Material Design风格组件 94 5.1 App结构和导航组件 95 5.1.1 MaterialApp(应用组件) 95 5.1.2 Scaffold(脚手架组件) 99 5.1.3 AppBar(应用按钮组件) 101 5.1.4 BottomNavigationBar(底部导航条组件) 103 5.1.5 TabBar(水平选项卡及视图组件) 104 5.1.6 Drawer(抽屉组件) 110 5.2 按钮和提示组件 112 5.2.1 FloatingActionButton(悬停按钮组件) 112 5.2.2 FlatButton(扁平按钮组件) 114 5.2.3 PopupMenuButton(弹出菜单组件) 115 5.2.4 SimpleDialog(简单对话框组件) 117 5.2.5 AlertDialog(提示对话框组件) 118 5.2.6 SnackBar(轻量提示组件) 120 5.3 其他组件 121 5.3.1 TextField(文本框组件) 121 5.3.2 Card(卡片组件) 123 第6章 Cupertino风格组件 126 6.1 CupertinoActivityIndicator(加载指示器组件) 126 6.2 CupertinoAlertDialog(对话框组件) 127 6.3 CupertinoButton(按钮组件) 128 6.4 Cupertino(导航组件集) 129 第7章 页面布局 135 7.1 基础布局处理 136 7.1.1 Container(容器布局) 136 7.1.2 Center(居中布局) 139 7.1.3 Padding(填充布局) 140 7.1.4 Align(对齐布局) 142 7.1.5 Row(水平布局) 144 7.1.6 Column(垂直布局) 145 7.1.7 FittedBox(缩放布局) 147 7.1.8 Stack/Alignment 150 7.1.9 Stack/Positioned 152 7.1.10 IndexedStack 154 7.1.11 OverflowBox(溢出父容器显示) 155 7.2 宽高尺寸处理 157 7.2.1 SizedBox(设置具体尺寸) 157 7.2.2 ConstrainedBox(限定最大最小宽高布局) 158 7.2.3 LimitedBox(限定最大宽高布局) 159 7.2.4 AspectRatio(调整宽高比) 161 7.2.5 FractionallySizedBox(百分比布局) 162 7.3 列表及表格布局 163 7.3.1 ListView 163 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 布局综合示例 176 7.5.1 布局分析 176 7.5.2 准备素材 177 7.5.3 编写代码 178 第8章 手势 184 8.1 用GestureDetector进行手势检测 184 8.2 用Dismissible实现滑动删除 186 第9章 资源和图片 189 9.1 添加资源和图片 189 9.1.1 指定asset 189 9.1.2 加载asset 190 9.1.3 平台asset 192 9.2 自定义字体 194 第10章 组件装饰和视觉效果 196 10.1 Opacity(透明度处理) 196 10.2 DecoratedBox(装饰盒子) 197 10.3 RotatedBox(旋转盒子) 204 10.4 Clip(剪裁处理) 205 10.5 案例—自定义画板 209 第11章 路由和持久化 227 11.1 路由的基本应用 227 11.2 Fluro企业级路由 235 11.3 Key-Value存储简介 240 11.3.1 shared_preferences的应用 241 11.3.2 shared_preferences的实现原理 244 11.4 文件存储 246 11.5 Sqflite的应用 249 11.5.1 常用操作方法 249 11.5.2 客户表操作示例 251 第12章 动画 256 12.1 动画的基本概念 256 12.2 Flutter的动画相关类 257 12.2.1 Animation简介 258 12.2.2 AnimationController(动画管理类) 258 12.2.3 CurvedAnimation(非线性动画类) 259 12.2.4 Tween(补间值生成类) 260 12.2.5 Listeners和StatusListeners(动画监听类) 261 12.2.6 动画控制流程 262 12.3 动画示例 262 12.3.1 字体放大动画 262 12.3.2 缓动动画 266 12.3.3 遮罩动画 269 12.3.4 数字变化动画 272 12.3.5 图表动画 274 12.4 动画组件 277 12.4.1 用AnimatedOpacity实现渐变效果 277 12.4.2 用Hero实现页面切换动画 279 第13章 Flutter插件开发 282 13.1 获取系统版本插件 282 13.1.1 新建插件 282 13.1.2 运行插件 285 13.1.3 示例代码分析 286 13.2 电池电量插件 293 13.2.1 新建插件 293 13.2.2 插件上层处理 293 13.2.3 Android原生层处理 295 13.2.4 iOS原生层处理 300 13.2.5 测试插件 304 13.3 Channel详解 308 13.3.1 通道名称 309 13.3.2 通信工具BinaryMessager 309 13.3.3 消息编解码器Codec 309 13.3.4 消息处理器Handler 310 13.4 PlatformView显示原生视图 311 13.4.1 新建插件 311 13.4.2 插件上层处理 311 13.4.3 Android原生层处理 314 13.4.4 iOS原生层处理 317 13.4.5 测试插件 321 第14章 开发工具及使用技巧 324 14.1 IDE集成开发环境 324 14.1.1 Android Studio / IntelliJ 324 14.1.2 Visual Studio Code 330 14.2 Flutter SDK 337 14.3 使用热重载 338 14.4 格式化代码 339 14.5 Flutter组件检查器 340 第15章 测试与发布应用 343 15.1 测试应用 343 15.1.1 简介 343 15.1.2 单元测试 344 15.1.3 Widget测试 345 15.1.4 集成测试 346 15.2 发布Android版App 348 15.2.1 检查App Manifest 348 15.2.2 查看构建配置 349 15.2.3 添加启动图标 350 15.2.4 App签名 350 15.2.5 构建发布版APK并安装在设备上 353 15.3 发布iOS版App 353 15.3.1 准备工作 353 15.3.2 在iTunes Connect上注册应用程序 353 15.3.3 注册一个Bundle ID 354 15.3.4 在iTunes Connect上创建应用程序记录 355 15.3.5 查看Xcode项目设置 355 15.3.6 添加应用程序图标 356 15.3.7 准备发布版本 358 15.3.8 将应用发布到App Store 360 第16章 综合案例 362 16.1 即时通信App界面实现 362 16.1.1 项目介绍 362 16.1.2 项目搭建 363 16.1.3 入口程序 366 16.1.4 加载页面 367 16.1.5 应用页面 368 16.1.6 搜索页面 375 16.1.7 聊天页面 379 16.1.8 好友页面 383 16.1.9 “我的”页面 390 16.2 企业站App实现 394 16.2.1 项目介绍 394 16.2.2 项目搭建 396 16.2.3 入口程序 399 16.2.4 加载页面 401 16.2.5 工具及配置文件处理 402 16.2.6 Fluro路由处理 404 16.2.7 Dio请求方法封装 405 16.2.8 索引页面 406 16.2.9 首页 410 16.2.10 首页轮播图 411 16.2.11 首页最新产品列表 412 16.2.12 产品页面 419 16.2.13 产品详情页面 423 16.2.14 “联系我们”页面 428 |