| 作者 |
| 张德立 杜文 老孟 |
| 丛书名 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9782008259375 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------Flutter之旅--------------------------- 本书从一个Android原生开发者的角度去认识和了解Flutter,本书作者以幽默生动的故事描写手法,记录在Flutter学习中所遇见的景色,并呈现给读者,主要内容包括:Flutter的安装与基本概念,Dart语法、组件与容器、布局基础、动画与手势、自定义组件、资源与路由、Flutter框架、Flutter与Redux、Flutter与iOS、插件开发、综合案例等。 ---------------------------Flutter实战--------------------------- 本书由浅入深的介绍了Flutter技术和开发流程。本书包含不仅包含大量示例、图片,还有配套的示例源码,可帮助读者循序渐进的掌握Flutter开发技术。本书分为入门、进阶、实例三大篇,其中入门篇(第1章~第7章)主要介绍了Flutter技术产生的背景、常用的组件以及布局方式,通过入门篇的学习,读者可以掌握如何使用Flutter来构建UI界面。进阶篇(第8章~第14章),包括Flutter中的事件机制、动画、自定义组件、文件和网络、插件、国际化以及Flutter核心原理等。通过本章内容,读者可以对Flutter整体构建及原理有一个深入的认识。实例篇(第15张),本章主要通过一个简版的Github APP来将前面介绍的内容串起来,让开发者对一个完整的Flutter APP开发流有个了解。 ---------------------------Flutter实战入门--------------------------- 本书系统化介绍Flutter技术入门方法,包括基本概念,并设计了大量案例,可帮助读者快速搭建Flutter应用。全书分11章,主要内容包括:第1章介绍Flutter的发展动态及环境搭建。第2章介绍Flutter工程目录结构及打包流程。第3章介绍Flutter组件的使用及使用场景。第4章介绍Dart语言的基础语法及概念。第5~9章介绍Flutter手势、动画、文件读写、网络、路由等相关知识。第9章介绍Flutter与Android、iOS混合开发的相关知识。第10章介绍国际化开发方法。第11章介绍一个完整的Flutter案例。 |
| 目录 |
---------------------------Flutter之旅--------------------------- 前言 Day 1 初识Flutter与技能储备 1 1.1 Flutter初始项目分析 1 1.1.1 Flutter初始项目结构 1 1.1.2 入口文件及MyApp分析 2 1.1.3 MyHomePage与_MyHomePageState分析 5 1.1.4 pubspec.yaml文件 6 1.2 基本Debug技能 7 1.2.1 断点和放行 7 1.2.2 变量查询和唤醒程序 8 1.2.3 Debug要点补充 9 1.3 辅助技能储备 10 1.3.1 三个实用工具 10 1.3.2 片段代码和快速重构 12 1.3.3 三个基础知识QA 14 1.4 Widget知识储备 15 1.4.1 命令式UI编程与声明式UI编程 16 1.4.2 认识Widget体系 16 1.4.3 Widget源码初识 18 1.4.4 组件的提取抽离 21 Day 2 Dart实用语法速览 23 2.1 基础语法 23 2.1.1 常用的数据类型 23 2.1.2 变量与常量 26 2.1.3 函数的使用 27 2.2 通过Size类看Dart中的面向对象 30 2.3 其他语法点 34 2.3.1 常用符号与关键字 34 2.3.2 库的使用和可见性 35 2.3.3 泛型 36 2.3.4 异步 37 2.3.5 异常处理 38 Day 3 界面风格和简单绘制 39 3.1 Material风格 40 3.1.1 Scaffold和BottomNavigationBar 40 3.1.2 TabBar和TabBarView 41 3.1.3 标题栏按钮和菜单组件 42 3.1.4 弹出对话框 43 3.1.5 界面的左右滑页 43 3.1.6 showSnackBar和showBottomSheet 44 3.2 Cupertino风格 45 3.2.1 CupertinoPageScaffold和CupertinoTabScaffold 46 3.2.2 CupertinoNavigationBar和CupertinoTabBar 46 3.2.3 CupertinoTabView 47 3.2.4 CupertinoAlertDialog和showCupertinoModalPopup 47 3.3 认识CustomPainter绘制 49 3.3.1 绘制网格 49 3.3.2 Canvas初级绘制 50 3.3.3 移植绘制n角星 52 3.3.4 移植绘制粒子数字 54 Day 4 基础Widget 56 4.1 Text组件 56 4.1.1 Text的基本使用 56 4.1.2 Text的阴影和装饰线 57 4.1.3 文字方向、对齐和溢出处理 58 4.1.4 RichText的使用 59 4.1.5 RichText与Text.rich 60 4.2 Image组件 60 4.2.1 Image资源的加载 61 4.2.2 图片的适应模式 62 4.2.3 图片颜色及混合模式 63 4.2.4 图片对齐模式及重复模式 63 4.2.5 用centerSlice实现图片局部放大 64 4.3 Container的使用 65 4.3.1 Container的基本使用 65 4.3.2 Padding的使用 66 4.3.3 Container的边线装饰 66 4.3.4 Container的约束和变换 67 4.3.5 Container与布局的渊源 68 4.4 常用多子布局 71 4.4.1 图解Flex布局 71 4.4.2 Stack布局 75 4.4.3 Wrap包裹布局 76 Day 5 列表与滑动 79 5.1 组件封装 79 5.1.1 静态布局 79 5.1.2 头像组件封装 80 5.1.3 条目组件封装 81 5.1.4 封装聊天信息组件 82 5.2 ListView的使用 84 5.2.1 基本用法 85 5.2.2 ListView的构造及分隔线 85 5.2.3 ListView的不同样式 87 5.2.4 ListView的上拉与下拉 87 5.3 常用滑动组件 90 5.3.1 单子滑动组件SingleChildScrollView 90 5.3.2 滑动控制器ScrollController 92 5.3.3 滑页组件PageView 94 5.3.4 网格组件GridView 97 5.4 Sliver家族 99 5.4.1 SliverAppBar的使用 100 5.4.2 Sliver中的列表布局、网格布局及普通布局 101 5.4.3 吸顶效果SliverPersistentHeader 103 Day 6 动画与路由 106 6.1 动画闲谈 106 6.1.1 FPS 106 6.1.2 动画控制器AnimationController 107 6.1.3 运动盒 108 6.2 Flutter动画详解 111 6.2.1 Animation和Animatable 111 6.2.2 动画状态监听和Animation方法 116 6.2.3 动画简化和封装 117 6.2.4 封装强化版FlutterContainer 118 6.3 路由与导航 122 6.3.1 打开路由 122 6.3.2 路由的传参 125 6.3.3 路由的跳转动画 128 6.3.4 Hero跳转动画 130 Day 7 手势组件与自定义组件 132 7.1 手势组件与使用 132 7.1.1 InkWell水波纹的使用 132 7.1.2 GestureDetector的使用 133 7.1.3 手写板的实现 135 7.2 根据现有组件实现自定义组件 137 7.2.1 切换Widget组件 137 7.2.2 颜色选择圆钮组件ColorChooser 139 7.2.3 函数运动组件MathRunner 142 7.3 绘制自定义组件 143 7.3.1 能力分析组件AbilityWidget 143 7.3.2 图片放大组件BiggerView 147 7.3.3 波纹线RhythmView 150 Day 8 Flutter渲染机制 153 8.1 认识三棵树 153 8.1.1 漫谈Widget、Element、RenderObject 154 8.1.2 认识RenderObject和Element 156 8.1.3 三棵树结构 158 8.1.4 三个根结点的初始化 159 8.2 Element的装配 162 8.2.1 RenderObjectToWidget-Element的装配 162 8.2.2 StatelessElement和StatefulElement的装配 164 8.2.3 多子元素挂载 166 8.3 State类全解析 168 8.3.1 State的生命周期回调 169 8.3.2 State切换和跳转时生命周期测试 173 8.3.3 setState做了什么 175 Day 9 异步与资源 178 9.1 认识异步与流 178 9.1.1 Dart中的异步任务 178 9.1.2 Dart中的流 181 9.2 文件中的异步与流 184 9.2.1 文件的简单操作 184 9.2.2 文件读写的异步操作 186 9.2.3 文件读写的流操作 188 9.2.4 使用文件打造图标转换工具 190 9.3 网络请求与json解析 193 9.3.1 使用GitHub开放API 测试网络访问 193 9.3.2 json解析 197 9.3.3 异步方法的基本使用 199 Day 10 数据共享与状态管理 202 10.1 数据共享和参数传递 202 10.1.1 数据共享的传统实现方式 202 10.1.2 用InheritedWidget实现数据共享 204 10.2 状态管理的原始处理过程 207 10.2.1 数据准备与界面说明 207 10.2.2 FutureBuilder与StreamBuilder的使用 209 10.3 使用插件进行状态管理 213 10.3.1 BLoC对数据状态的管理 213 10.3.2 Provider对数据状态的管理 219 10.3.3 Redux对数据状态的管理 225 Day 11 数据持久化和读取 230 11.1 Flutter中的数据库存储 230 11.1.1 数据库的初始化 231 11.1.2 使用sqflite进行增删改查 234 11.1.3 数据库数据与UI界面的对接 237 11.2 表单与数据持久化 240 11.2.1 表单注册页 240 11.2.2 持久化json数据和读取 241 11.2.3 持久化XML数据和读取 243 Day 12 插件及混合开发 245 12.1 Flutter和平台间的通信方式 246 12.1.1 Flutter/Dart端 246 12.1.2 Android/Kotlin端 247 12.1.3 用toast连接两个世界 248 12.1.4 Flutter向平台传参 250 12.1.5 插件的使用和上传 253 12.2 Flutter常见插件的使用 255 12.2.1 路径插件和权限插件 255 12.2.2 音频播放插件audioplayer 257 12.2.3 视频播放插件video_player 259 12.2.4 图片拾取器image_picker 261 12.2.5 通过webview_flutter使用已有Web页面 262 12.3 Flutter的混合开发 264 12.3.1 Flutter和Android混合开发 264 12.3.2 Flutter和iOS混合开发 269 12.3.3 让Android视图加入Flutter 271 ---------------------------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实战入门--------------------------- 前言 第1章 Flutter简介及环境搭建1 1.1 移动端软件发展历程 1 1.2 Flutter 简介 2 1.3 搭建开发环境 4 1.3.1 下载Flutter SDK4 1.3.2 设置镜像地址及环境变量5 1.3.3 Android Studio的安装及设置7 1.3.4 安装Xcode9 1.3.5 检查Flutter开发环境9 1.4 本章小结 10 第2章 初识Flutter项目 11 2.1 创建Flutter 项目 11 2.2 项目说明 14 2.3 App调试运行 15 2.3.1 Android 手机调试运行15 2.3.2 iOS手机调试运行18 2.4 设置App名称、图标 21 2.4.1 Android设置App名称、图标21 2.4.2 iOS设置App名称、图标22 2.5 设置App启动页 24 2.5.1 Android 设置启动页24 2.5.2 iOS设置启动页25 2.6 App 构建发布 26 2.6.1 Android 构建发布26 2.6.2 iOS构建发布31 2.7 本章小结 32 第3章 组件 33 3.1 基础组件 33 3.1.1 文本组件(Text)34 3.1.2 文本输入组件(TextField)40 3.1.3 图片组件(Image)42 3.1.4 按钮组件(Button)45 3.1.5 容器类组件(Container)47 3.1.6 容器类组件(Row和Column)48 3.2 Material 风格组件 50 3.2.1 MaterialApp50 3.2.2 Scaffold51 3.2.3 AppBar55 3.2.4 BottomNavigationBar56 3.2.5 TabBar58 3.2.6 Drawer61 3.3 Cupertino风格组件 62 3.3.1 CupertinoActivityIndicator62 3.3.2 CupertinoAlertDialog62 3.3.3 CupertinoButton63 3.3.4 CupertinoSlider64 3.3.5 CupertinoSwitch66 3.4 容器类组件 67 3.4.1 填充布局(Padding)67 3.4.2 居中布局(Center)68 3.4.3 对齐布局(Align)68 3.4.4 固定宽高比(AspectRatio)69 3.4.5 Transform70 3.4.6 Stack71 3.4.7 流式布局(Wrap)72 3.5 列表及表格组件 73 3.5.1 ListView73 3.5.2 GridView75 3.5.3 Table78 3.5.4 ExpansionTile79 3.6 项目实战:登录功能 80 3.6.1 登录界面UI分析80 3.6.2 顶部Logo83 3.6.3 账号、密码输入框83 3.6.4 提交按钮87 3.6.5 底部的“服务协议”87 3.6.6 Loading 控件89 3.7 本章小结 91 第4章 Dart语言基础 92 4.1 Dart简介 92 4.2 内置数据类型 93 4.3 定义变量、常量 94 4.4 定义函数 95 4.4.1 普通函数95 4.4.2 可选参数96 4.4.3 匿名函数96 4.4.4 箭头函数97 4.5 运算符及条件表达式 97 4.5.1 判定和转换类型的操作符97 4.5.2 三目表达式98 4.5.3 非空条件判断符98 4.5.4 级联运算符98 4.5.5 非空判断符98 4.6 分支与循环语句 99 4.6.1 if..else99 4.6.2 switch99 4.6.3 基本循环for和while100 4.6.4 List遍历101 4.6.5 Map遍历101 4.7 定义类 102 4.7.1 构造函数102 4.7.2 类的运算符重载103 4.7.3 extends、with、implements、abstract的用法104 4.7.4 定义私有变量106 4.8 导入包 106 4.9 异常捕获 107 4.10 异步编程 108 4.11 泛型 110 4.12 注释 111 4.13 本章小结 111 第5章 事件、手势处理 112 5.1 GestureDetector 112 5.2 GestureRecognizer 116 5.3 原始指针 118 5.4 实战:“左滑删除”效果 119 5.5 本章小结 123 第6章 动画 124 6.1 动画简介 124 6.2 动画基本使用 126 6.3 AnimatedWidget 129 6.4 AnimatedBuilder 131 6.5 交错动画 132 6.6 AnimatedList 135 6.7 Hero 138 6.8 本章小结 140 第7章 文件操作与网络请求 141 7.1 获取Android和iOS文件路径 141 7.2 文件夹常用操作 142 7.3 文件常用操作 144 7.4 HTTPClient网络请求 145 7.5 dio 介绍及使用 146 7.6 json数据转Model 148 7.7 项目实战:记事本 150 7.7.1 用记事本来写日记的效果150 7.7.2 日记的展示和添加152 7.7.3 日记的编辑和保存155 7.8 本章小结 158 第8章 路由导航和存储 159 8.1 路由导航 159 8.2 命名路由 162 8.3 shared_preferences存储数据 164 8.4 SQLite存储数据 165 8.5 本章小结 170 第9章 混合开发 172 9.1 Android与Flutter混合开发 172 9.1.1 Android原生项目引入Flutter172 9.1.2 添加Flutter到Activity175 9.1.3 添加Flutter到Fragment177 9.1.4 Flutter与Android通信178 9.2 iOS与Flutter混合开发 179 9.2.1 iOS原生项目引入Flutter 180 9.2.2 Flutter与iOS通信181 9.3 本章小结 182 第10章 国际化 183 10.1 开发的App支持国际化 183 10.2 监听系统语言切换 184 10.3 开发的UI支持国际化 186 10.4 使用Intl 189 10.5 本章小结 192 第11章 项目实战:新闻客户端 193 11.1 应用简介 193 11.2 整体框架及导航 196 11.3 轮播热门事件 198 11.4 搜索页面 202 11.5 设置页面 207 11.6 新闻分类 212 11.7 新闻列表及详情 214 11.8 本章小结 221 第12章 项目实战:App升级功能 222 12.1 App升级功能预览及功能分析 222 12.2 App升级功能提示框 226 12.3 下载应用程序 231 12.4 安装应用程序 237 12.5 Android平台跳转到应用市场进行更新 242 12.6 iOS平台跳转到App Store进行更新 246 12.7 本章小结 248 |