本書是一本全面介紹Flutter跨平臺框架的書籍,主要分為入門,進(jìn)階和實戰(zhàn)三部分,細(xì)分為13章。入門篇包括背景知識、環(huán)境搭建、基礎(chǔ)語法、組件和API等;進(jìn)階篇包括網(wǎng)絡(luò)通信、第三方插件、熱更新和應(yīng)用打包發(fā)布等;實戰(zhàn)篇則是一個綜合的開發(fā)案例,讓讀者快速的上手項目開發(fā)。每個階段的知識都是層層深入且環(huán)環(huán)相扣的,能夠幫助讀者對Flutter框架的原理與應(yīng)用有一個全面的認(rèn)識。
本書適合具有一定Android/iOS原生開發(fā)基礎(chǔ)的一線APP開發(fā)工程師、大中專院校相關(guān)專業(yè)師生、培訓(xùn)班學(xué)員學(xué)習(xí),可用于夯實基礎(chǔ),提Flutter開發(fā)實戰(zhàn)技能。
本書是一本全面介紹Flutter跨平臺框架的書籍,主要分為入門,進(jìn)階和實戰(zhàn)三部分,細(xì)分為13章。入門篇包括背景知識、環(huán)境搭建、基礎(chǔ)語法、組件和API等;進(jìn)階篇包括網(wǎng)絡(luò)通信、第三方插件、熱更新和應(yīng)用打包發(fā)布等;實戰(zhàn)篇則是一個綜合的開發(fā)案例,讓讀者快速的上手項目開發(fā)。每個階段的知識都是層層深入且環(huán)環(huán)相扣的,能夠幫助讀者對Flutter框架的原理與應(yīng)用有一個全面的認(rèn)識。
本書適合具有一定Android/iOS原生開發(fā)基礎(chǔ)的一線APP開發(fā)工程師、大中專院校相關(guān)專業(yè)師生、培訓(xùn)班學(xué)員學(xué)習(xí),可用于夯實基礎(chǔ),提Flutter開發(fā)實戰(zhàn)技能。
眾所周知,傳統(tǒng)的原生Android、iOS開發(fā)技術(shù)雖然比較成熟,但多端重復(fù)開發(fā)和開發(fā)效率低下也是很多企業(yè)不愿意接受的,而不斷崛起的跨平臺技術(shù)讓企業(yè)看到了希望,一次編寫,處處運行不再是難以企及的目標(biāo)。
作為Google開源的一套跨平臺開發(fā)框架,F(xiàn)lutter既支持移動應(yīng)用開發(fā),又支持Web、桌面和嵌入式平臺應(yīng)用的開發(fā),真正幫助開發(fā)者通過一套代碼即可高效構(gòu)建多平臺應(yīng)用。并且,自2018年12月發(fā)布Flutter 1.0版本以來,越來越多的公司開始采用Flutter技術(shù)進(jìn)行跨平臺移動端應(yīng)用開發(fā),F(xiàn)lutter也逐漸進(jìn)入移動應(yīng)用開發(fā)者的視野,越來越多的開發(fā)者也逐漸投入Flutter的學(xué)習(xí)和開發(fā)中。
路漫漫其修遠(yuǎn)兮,吾將上下而求索,通過Flutter跨平臺技術(shù)的學(xué)習(xí)和本書的寫作,我深刻地意識到學(xué)無止境的含義。2019年,我出版了第一本Flutter應(yīng)用開發(fā)書籍,正是那時候開始,我一直關(guān)注著Flutter技術(shù)的發(fā)展。多年以來,F(xiàn)lutter進(jìn)行了多個版本的更新,之前的知識已經(jīng)過時,升級顯得很有必要,于是在2023年我對Flutter知識體系重新進(jìn)行了梳理并升級,于是有了本書。
本書是一本實戰(zhàn)類型的書籍,旨在幫助開發(fā)者快速掌握Flutter跨平臺開發(fā)技術(shù),并將Flutter技術(shù)快速地運用到實際項目開發(fā)中。同時,本書摒棄了傳統(tǒng)軟件開發(fā)類書籍逐個知識點介紹的編排模式,而采用案例詮釋理論內(nèi)涵、項目推動實踐創(chuàng)新的編寫思路,既講解項目的實現(xiàn)過程和步驟,又講解項目實現(xiàn)所需的理論知識和技術(shù),讓讀者掌握理論知識后會靈活運用,并在新項目開發(fā)中拓展創(chuàng)新。相信本書定會對您學(xué)習(xí)Flutter技術(shù)帶來幫助和啟發(fā)。
本書定位為Flutter應(yīng)用程序開發(fā)入門到實戰(zhàn),是一本零基礎(chǔ)到項目實戰(zhàn)能力提升的技術(shù)進(jìn)階類圖書;A(chǔ)部分主要介紹的是Flutter框架跨平臺開發(fā)相關(guān)知識,如Flutter框架背景、開發(fā)環(huán)境搭建、基礎(chǔ)組件、布局、跳轉(zhuǎn)和路由、動畫、手勢識別與事件處理、數(shù)據(jù)存儲與訪問、狀態(tài)管理、HTTP網(wǎng)絡(luò)請求與服務(wù)器端數(shù)據(jù)的交互等。實戰(zhàn)部分則主要介紹的是Flutter工程化開發(fā)的相關(guān)內(nèi)容,如混合開發(fā)、應(yīng)用主題、Flutter Web和Desk應(yīng)用開發(fā)、基于Fair的動態(tài)化以及Flutter項目實戰(zhàn)。
本書以實戰(zhàn)為主,理論和實踐相結(jié)合,通過大量的代碼演示和講解從小項目到一個相對完整的課程項目的實現(xiàn)。期待讀者在學(xué)習(xí)本書之后,能夠綜合運用各種組件及第三方庫,熟練掌握Flutter框架進(jìn)行軟件項目的設(shè)計、開發(fā)和上線。另外,書中的小說項目案例詳細(xì)闡述了如何使用Flutter框架進(jìn)行跨平臺移動開發(fā),內(nèi)容翔實、步驟清晰,為實際軟件項目開發(fā)工作提供了現(xiàn)實的參考解決方案。
本書特色
(1)側(cè)重基礎(chǔ),循序漸進(jìn)。
本書涵蓋Flutter跨平臺開發(fā)各方面的基礎(chǔ)知識點,并且對知識點和技術(shù)要點由淺入深地進(jìn)行講解,非常適合初學(xué)者。
(2)大量項目實例,內(nèi)容翔實。
本書在講解Flutter的各個知識點時,運用了大量的實例并配有運行效果圖和源碼。讀者在自行練習(xí)時可以參考源碼進(jìn)行學(xué)習(xí)。
(3)實例貼近實際開發(fā)場景。
本書采用的實例大多貼近實際開發(fā)場景,通俗易懂的文字描述也有助于讀者理解,項目實戰(zhàn)也遵循商業(yè)項目的開發(fā)流程,最大程度還原商業(yè)應(yīng)用的開發(fā)過程。
作者
2024年1月
向治洪,前端開發(fā)專家,10余年軟件開發(fā)經(jīng)驗,多年互聯(lián)網(wǎng)大廠實戰(zhàn)經(jīng)驗,著有《React Native移動開發(fā)實戰(zhàn)》、《Kotlin入門與實戰(zhàn)》、《Weex跨平臺開發(fā)與實戰(zhàn)》、《Flutter跨平臺開發(fā)入門與實戰(zhàn)》和《Android應(yīng)用開發(fā)詳解》等;
在CSDN、掘金社區(qū)、知乎、騰訊云等技術(shù)社區(qū)擁有十萬粉絲,千萬的訪問量;
第1章 初識Flutter1
1.1 Flutter簡介 1
1.1.1 Flutter誕生歷史2
1.1.2 Flutter優(yōu)勢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環(huán)境搭建 6
2.1.1 Android環(huán)境6
2.1.2 iOS環(huán)境8
2.1.3 獲取Flutter SDK9
2.2 開發(fā)工具 10
2.2.1 VS Code10
2.2.2 Android Studio11
2.3 Flutter項目示例 12
2.3.1 初始化項目13
2.3.2 項目結(jié)構(gòu)14
2.3.3 運行項目14
2.3.4 程序調(diào)試15
2.3.5 體驗熱重載16
2.3.6 包管理17
2.4 習(xí)題 19
第3章 Dart語言基礎(chǔ)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 內(nèi)置類型 22
3.3.1 數(shù)值類型22
3.3.2 字符串類型23
3.3.3 布爾類型23
3.3.4 數(shù)組23
3.3.5 集合24
3.3.6 Map24
3.3.7 Runes25
3.3.8 Symbols25
3.4 函數(shù) 25
3.4.1 參數(shù)26
3.4.2 main()函數(shù)26
3.4.3 匿名函數(shù)26
3.4.4 閉包函數(shù)27
3.4.5 返回值27
3.5 類 28
3.5.1 類的成員28
3.5.2 構(gòu)造函數(shù)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關(guān)鍵字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 習(xí)題 38
第4章 Flutter組件40
4.1 計數(shù)器應(yīng)用 40
4.2 組件基礎(chǔ)知識 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 布局開發(fā) 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 滾動監(jiān)聽70
4.6.5 PageView73
4.6.6 CustomScrollView75
4.7 習(xí)題 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 習(xí)題 92
第6章 動畫93
6.1 動畫基礎(chǔ) 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 習(xí)題 108
第7章 路由與導(dǎo)航110
7.1 路由基礎(chǔ) 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 習(xí)題 123
第8章 網(wǎng)絡(luò)編程124
8.1 網(wǎng)絡(luò)基礎(chǔ) 124
8.1.1 HTTP124
8.1.2 HTTPS126
8.1.3 GET與POST127
8.2 網(wǎng)絡(luò)請求 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 事件循環(huán)137
8.4.2 Isolate139
8.4.3 線程管理143
8.4.4 事件流145
8.4.5 FutrueBuilder146
8.5 習(xí)題 148
第9章 數(shù)據(jù)存儲149
9.1 SharedPreterences存儲 149
9.1.1 基本操作149
9.1.2 綜合示例150
9.2 SQLite存儲 152
9.2.1 基本操作152
9.2.2 數(shù)據(jù)庫工具類157
9.2.3 綜合示例159
9.3 文件存儲 161
9.3.1 基本概念161
9.3.2 文件操作工具類163
9.3.3 綜合示例164
9.4 習(xí)題 168
第10章 主題與國際化169
10.1 應(yīng)用主題 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 創(chuàng)建語言文件179
10.3.3 實現(xiàn)國際化180
10.4 習(xí)題 181
第11章 混合開發(fā)182
11.1 混合開發(fā)簡介 182
11.2 集成Flutter 183
11.2.1 Flutter模塊183
11.2.2 原生Android集成Flutter184
11.2.3 原生iOS集成Flutter186
11.2.4 熱重載與調(diào)試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 混合路由導(dǎo)航201
11.4.2 原生導(dǎo)航到Flutter202
11.4.3 Flutter導(dǎo)航到原生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 生命周期函數(shù)213
11.6 Flutter插件開發(fā) 214
11.6.1 新建插件項目214
11.6.2 示例插件215
11.6.3 插件開發(fā)217
11.6.4 運行插件221
11.6.5 發(fā)布插件221
11.7 習(xí)題 222
第12章 Flutter Web224
12.1 Flutter Web簡介 224
12.2 Flutter Web實戰(zhàn) 226
12.2.1 項目創(chuàng)建與運行226
12.2.2 調(diào)試項目226
12.2.3 打包與部署228
12.3 Flutter Desk實戰(zhàn) 230
12.3.1 Flutter Desk簡介230
12.3.2 Flutter Desk實戰(zhàn)231
12.3.3 Flutter Desk打包232
12.4 Fair動態(tài)化 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 習(xí)題 246
第13章 書旗小說應(yīng)用實戰(zhàn)247
13.1 項目背景 247
13.2 項目搭建 248
13.2.1 創(chuàng)建項目248
13.2.2 構(gòu)建主框架249
13.2.3 網(wǎng)絡(luò)請求251
13.2.4 網(wǎng)頁組件251
13.2.5 接入tts253
13.3 書架 254
13.3.1 閱讀記錄254
13.3.2 我的書架255
13.3.3 書架管理257
13.3.4 確認(rèn)彈框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 圖書章節(jié)271
13.6.3 書友評論272
13.6.4 發(fā)布評論274
13.7 閱讀器開發(fā) 274
13.7.1 創(chuàng)建操作欄274
13.7.2 閱讀器翻頁276
13.7.3 下拉菜單276
13.7.4 黑白模式277
13.8 性能分析與優(yōu)化 279
13.8.1 檢測工具279
13.8.2 GPU問題分析281
13.8.3 UI問題分析283
13.8.4 布局優(yōu)化284
13.8.5 內(nèi)存優(yōu)化285
第14章 打包與發(fā)布286
14.1 應(yīng)用配置 286
14.1.1 配置啟動頁286
14.1.2 更改默認(rèn)配置288
14.2 Android發(fā)布 289
14.2.1 創(chuàng)建簽名文件289
14.2.2 制作簽名包291
14.3 iOS發(fā)布 291
14.3.1 加入蘋果開發(fā)者計劃291
14.3.2 添加證書配置292
14.3.3 注冊App ID294
14.3.4 使用Xcode打包294
14.3.5 發(fā)布iOS包297