本書由淺入深的介紹了Flutter技術和開發(fā)流程。本書包含不僅包含大量示例、圖片,還有配套的示例源碼,可幫助讀者循序漸進的掌握Flutter開發(fā)技術。本書分為入門、進階、實例三大篇,其中入門篇(第1章~第7章)主要介紹了Flutter技術產(chǎn)生的背景、常用的組件以及布局方式,通過入門篇的學習,讀者可以掌握如何使用Flutter來構建UI界面。進階篇(第8章~第14章),包括Flutter中的事件機制、動畫、自定義組件、文件和網(wǎng)絡、插件、國際化以及Flutter核心原理等。通過本章內(nèi)容,讀者可以對Flutter整體構建及原理有一個深入的認識。實例篇(第15張),本章主要通過一個簡版的Github APP來將前面介紹的內(nèi)容串起來,讓開發(fā)者對一個完整的Flutter APP開發(fā)流有個了解。
前 言
第一篇 入門篇
第1章 起步 2
1.1 移動開發(fā)技術簡介 2
1.1.1 原生開發(fā)與跨平臺技術 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開發(fā)環(huán)境 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 函數(shù) 28
1.4.3 異步支持 30
1.4.4 Stream 34
1.4.5 Dart與Java及JavaScript的對比 35
第2章 第一個Flutter應用 36
2.1 計數(shù)器應用示例 36
2.1.1 創(chuàng)建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 調(diào)試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內(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 單選開關和復選框 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 滾動監(jiān)聽及控制 187
6.6.1 ScrollController 187
6.6.2 滾動監(jiān)聽 191
第7章 功能型組件 194
7.1 導航返回攔截(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 對話框詳解 219
7.6.1 使用對話框 219
7.6.2 打開動畫及遮罩 224
7.6.3 對話框實現(xiàn)原理 226
7.6.4 對話框狀態(tài)管理 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 動畫基本結構及狀態(tài)監(jiān)聽 265
9.2.1 動畫基本結構 265
9.2.2 動畫狀態(tài)監(jiān)聽 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 組合現(xiàn)有組件 298
10.3 組合實例:TurnBox 301
10.4 自繪組件(CustomPaint與Canvas) 305
10.5 自繪實例:圓形背景漸變進度條 309
第11章 文件操作與網(wǎng)絡請求 318
11.1 文件操作 318
11.2 通過HttpClient發(fā)起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 開發(fā)Package 348
12.2 插件開發(fā):平臺通道簡介 352
12.3 開發(fā)Flutter插件 355
12.4 插件開發(fā):Android端API實現(xiàn) 357
12.5 插件開發(fā):iOS端API實現(xiàn) 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 實現(xiàn)Localizations 379
13.3 使用Intl包 381
13.4 國際化中的常見問題 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 命中測試 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 全局變量及共享狀態(tài) 427
15.4.1 全局變量:Global類 427
15.4.2 共享狀態(tài) 428
15.5 網(wǎng)絡請求封裝 430
15.5.1 網(wǎng)絡接口緩存 430
15.5.2 封裝網(wǎ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
參考文獻 452