定 價(jià):99 元
叢書名:移動(dòng)應(yīng)用開發(fā)技術(shù)叢書
- 作者:杜文
- 出版時(shí)間:2020/3/1
- ISBN:9787111644521
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TN929.53
- 頁碼:0
- 紙張:
- 版次:
- 開本:16開
本書由淺入深的介紹了Flutter技術(shù)和開發(fā)流程。本書包含不僅包含大量示例、圖片,還有配套的示例源碼,可幫助讀者循序漸進(jìn)的掌握Flutter開發(fā)技術(shù)。本書分為入門、進(jìn)階、實(shí)例三大篇,其中入門篇(第1章~第7章)主要介紹了Flutter技術(shù)產(chǎn)生的背景、常用的組件以及布局方式,通過入門篇的學(xué)習(xí),讀者可以掌握如何使用Flutter來構(gòu)建UI界面。進(jìn)階篇(第8章~第14章),包括Flutter中的事件機(jī)制、動(dòng)畫、自定義組件、文件和網(wǎng)絡(luò)、插件、國(guó)際化以及Flutter核心原理等。通過本章內(nèi)容,讀者可以對(duì)Flutter整體構(gòu)建及原理有一個(gè)深入的認(rèn)識(shí)。實(shí)例篇(第15張),本章主要通過一個(gè)簡(jiǎn)版的Github APP來將前面介紹的內(nèi)容串起來,讓開發(fā)者對(duì)一個(gè)完整的Flutter APP開發(fā)流有個(gè)了解。
前 言
第一篇 入門篇
第1章 起步 2
1.1 移動(dòng)開發(fā)技術(shù)簡(jiǎn)介 2
1.1.1 原生開發(fā)與跨平臺(tái)技術(shù) 2
1.1.2 Hybrid技術(shù)簡(jiǎn)介 3
1.1.3 React Native、Weex及快應(yīng)用 5
1.1.4 QT Mobile 7
1.1.5 Flutter問世 8
1.1.6 總結(jié) 9
1.2 初識(shí)Flutter 10
1.2.1 Flutter簡(jiǎn)介 10
1.2.2 Flutter框架結(jié)構(gòu) 12
1.2.3 如何學(xué)習(xí)Flutter 13
1.3 搭建Flutter開發(fā)環(huán)境 14
1.3.1 安裝Flutter 14
1.3.2 IDE配置與使用 19
1.3.3 連接設(shè)備運(yùn)行Flutter應(yīng)用 21
1.3.4 Android Studio常見配置問題 24
1.4 Dart語言簡(jiǎn)介 26
1.4.1 變量聲明 27
1.4.2 函數(shù) 28
1.4.3 異步支持 30
1.4.4 Stream 34
1.4.5 Dart與Java及JavaScript的對(duì)比 35
第2章 第一個(gè)Flutter應(yīng)用 36
2.1 計(jì)數(shù)器應(yīng)用示例 36
2.1.1 創(chuàng)建Flutter應(yīng)用模板 36
2.1.2 首頁 39
2.2 路由管理 42
2.2.1 一個(gè)簡(jiǎn)單示例 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 總結(jié) 50
2.3 包管理 51
2.4 資源管理 55
2.5 調(diào)試Flutter應(yīng)用 60
2.6 Flutter異常捕獲 67
2.6.1 Dart單線程模型 67
2.6.2 異常捕獲 69
第3章 基礎(chǔ)組件 73
3.1 Widget簡(jiǎn)介 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對(duì)象 84
3.1.8 Flutter SDK內(nèi)置組件庫介紹 85
3.2 狀態(tài)管理 87
3.2.1 Widget管理自身狀態(tài) 88
3.2.2 父Widget管理子Widget的狀態(tài) 89
3.2.3 混合狀態(tài)管理 91
3.2.4 全局狀態(tài)管理 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 單選開關(guān)和復(fù)選框 109
3.6.1 屬性及外觀 110
3.6.2 總結(jié) 110
3.7 輸入框及表單 110
3.7.1 TextField 110
3.7.2 Form 118
3.8 進(jìn)度指示器 122
3.8.1 LinearProgressIndicator 122
3.8.2 CircularProgressIndicator 123
3.8.3 自定義尺寸 124
3.8.4 顏色動(dòng)畫 125
3.8.5 自定義進(jìn)度指示器樣式 126
第4章 布局類組件 127
4.1 布局類組件簡(jiǎn)介 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 對(duì)齊與相對(duì)定位(Align) 141
4.6.1 Align 142
4.6.2 Align與Stack對(duì)比 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和底部導(dǎo)航 158
5.6.1 Scaffold 158
5.6.2 AppBar 160
5.6.3 抽屜菜單 163
5.6.4 FloatingActionButton 165
5.6.5 底部導(dǎo)航欄 165
5.7 剪裁(Clip) 166
第6章 可滾動(dòng)組件 169
6.1 可滾動(dòng)組件簡(jiǎn)介 169
6.2 SingleChildScrollView 171
6.3 ListView 172
6.4 GridView 179
6.5 CustomScrollView 184
6.6 滾動(dòng)監(jiān)聽及控制 187
6.6.1 ScrollController 187
6.6.2 滾動(dòng)監(jiān)聽 191
第7章 功能型組件 194
7.1 導(dǎo)航返回?cái)r截(WillPopScope) 194
7.2 數(shù)據(jù)共享(InheritedWidget) 195
7.3 跨組件狀態(tài)共享(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 對(duì)話框詳解 219
7.6.1 使用對(duì)話框 219
7.6.2 打開動(dòng)畫及遮罩 224
7.6.3 對(duì)話框?qū)崿F(xiàn)原理 226
7.6.4 對(duì)話框狀態(tài)管理 227
7.6.5 其他類型的對(duì)話框 235
第二篇 進(jìn)階篇
第8章 事件處理與通知 242
8.1 原始指針事件處理 242
8.2 手勢(shì)識(shí)別 245
8.2.1 GestureDetector 245
8.2.2 GestureRecognizer 249
8.2.3 手勢(shì)競(jìng)爭(zhēng)與沖突 251
8.3 事件總線 253
8.4 Notification 255
第9章 動(dòng)畫 261
9.1 Flutter動(dòng)畫簡(jiǎn)介 261
9.2 動(dòng)畫基本結(jié)構(gòu)及狀態(tài)監(jiān)聽 265
9.2.1 動(dòng)畫基本結(jié)構(gòu) 265
9.2.2 動(dòng)畫狀態(tài)監(jiān)聽 270
9.3 自定義路由切換動(dòng)畫 270
9.4 Hero動(dòng)畫 273
9.5 交織動(dòng)畫 275
9.6 通用切換動(dòng)畫組件 278
9.6.1 AnimatedSwitcher 279
9.6.2 AnimatedSwitcher的高級(jí)用法 282
9.7 動(dòng)畫過渡組件 286
9.7.1 自定義動(dòng)畫過渡組件 286
9.7.2 Flutter預(yù)置的動(dòng)畫過渡組件 293
第10章 自定義組件 297
10.1 自定義組件方法簡(jiǎn)介 297
10.2 組合現(xiàn)有組件 298
10.3 組合實(shí)例:TurnBox 301
10.4 自繪組件(CustomPaint與Canvas) 305
10.5 自繪實(shí)例:圓形背景漸變進(jìn)度條 309
第11章 文件操作與網(wǎng)絡(luò)請(qǐng)求 318
11.1 文件操作 318
11.2 通過HttpClient發(fā)起HTTP請(qǐng)求 320
11.3 dio HTTP請(qǐng)求庫 327
11.4 示例:HTTP分塊下載 329
11.5 使用WebSockets 334
11.6 使用Socket API 338
11.7 JSON轉(zhuǎn)Dart Model類 338
第12章 包與插件 348
12.1 開發(fā)Package 348
12.2 插件開發(fā):平臺(tái)通道簡(jiǎn)介 352
12.3 開發(fā)Flutter插件 355
12.4 插件開發(fā):Android端API實(shí)現(xiàn) 357
12.5 插件開發(fā):iOS端API實(shí)現(xiàn) 360
12.6 Texture和PlatformView 364
12.6.1 Texture(示例:使用攝像頭) 364
12.6.2 PlatformView(示例:WebView) 373
第13章 國(guó)際化 375
13.1 讓APP支持多語言 375
13.2 實(shí)現(xiàn)Localizations 379
13.3 使用Intl包 381
13.4 國(guó)際化中的常見問題 386
第14章 Flutter核心原理 388
14.1 Flutter UI系統(tǒng) 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 命中測(cè)試 401
14.3.4 語義化 402
14.3.5 總結(jié) 403
14.4 Flutter運(yùn)行機(jī)制:從啟動(dòng)到顯示 403
14.5 圖片加載原理與緩存 410
14.5.1 ImageProvider 410
14.5.2 Image組件原理 418
第三篇 實(shí)例篇
第15章 一個(gè)完整的Flutter應(yīng)用 422
15.1 GitHub客戶端示例 422
15.2 Flutter APP代碼結(jié)構(gòu) 423
15.3 Model類定義 424
15.4 全局變量及共享狀態(tài) 427
15.4.1 全局變量:Global類 427
15.4.2 共享狀態(tài) 428
15.5 網(wǎng)絡(luò)請(qǐng)求封裝 430
15.5.1 網(wǎng)絡(luò)接口緩存 430
15.5.2 封裝網(wǎng)絡(luò)請(qǐng)求 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
參考文獻(xiàn) 452