Flutter實戰(zhàn) 第2版
定 價:129 元
叢書名:移動應(yīng)用開發(fā)技術(shù)叢書
本書采用由淺入深的方式介紹Flutter技術(shù)原理,分為三篇15章,主要內(nèi)容如下:?入門篇(第1章~第5章),包括Flutter技術(shù)的出現(xiàn)背景和簡介、Flutter的各種類型的Widget以及如何構(gòu)建UI。通過學(xué)習(xí)本章,讀者可以掌握如何使用Flutter來構(gòu)建UI界面。?進(jìn)階篇(第6章~第14章),包括可滾動組件、事件機(jī)制、動畫、自定義組件、文件和網(wǎng)絡(luò)、國際化以及Flutter核心原理等。通過本章內(nèi)容,讀者可以對Flutter整體構(gòu)建及原理有一個深入的認(rèn)識。?實例篇(第15章),本章主要通過一個簡版的Github App來將前面介紹的內(nèi)容串起來,讓開發(fā)者對一個完整的Flutter App開發(fā)流有個了解。
1.本書由Flutter中文網(wǎng)社區(qū)創(chuàng)始人、網(wǎng)紅暢銷書《Flutter實戰(zhàn)》作者撰寫,根據(jù)Flutter3.0版本技術(shù)迭代對第1版內(nèi)容進(jìn)行大量更新和重構(gòu),增加一些實例解析核心技術(shù)原理,并在進(jìn)階篇對Flutter技術(shù)中相對較深但很重要的內(nèi)容進(jìn)行了深入介紹。另外,書中還添加了一些動態(tài)圖二維碼,方便讀者在閱讀時掃描二維碼體驗動態(tài)圖效果。2.本書適合PC客戶端、移動開發(fā)或Web前端開發(fā)者和想學(xué)習(xí)Flutter技術(shù)更新進(jìn)階實戰(zhàn)的Flutter初學(xué)者閱讀參考。3.讀者可以免費下載隨書源代碼:https://github.com/wendux/flutter_in_action_2。另外,由于本書實例中實現(xiàn)了不少通用性較強(qiáng)的組件,為了方便讀者復(fù)用,作者將通用性較強(qiáng)的組件都添加到了 Flukit 開源項目,它是作者維護(hù)的一個Flutter開源組件庫,項目地址是:https://github.com/flutterchina/flukit。
轉(zhuǎn)眼間從《Flutter實戰(zhàn)》第1版電子版發(fā)布到現(xiàn)在已經(jīng)接近兩年時間,這兩年中,第1版實體書出版并成為Flutter技術(shù)類暢銷書之一,其電子版官網(wǎng)UV用戶數(shù)超過60萬,日訪問量長期穩(wěn)定在3500人左右。當(dāng)然,取得如此成績最主要的一個原因是這兩年 Flutter 技術(shù)熱度持續(xù)提高,整個 Flutter 生態(tài)和社區(qū)也發(fā)生了翻天覆地的變化,主要體現(xiàn)在:Flutter穩(wěn)定版發(fā)布到了3.0,現(xiàn)在已經(jīng)支持移動端、Web端和PC端,通過Flutter 開發(fā)的應(yīng)用程序能夠輕松地在各個平臺遷移并獲得很好的性能。Flutter 在 GitHub Star 數(shù)上排名已經(jīng)進(jìn)入了前20,在跨端框架中排名第一。全球很多公司,比如Google、微軟、阿里巴巴、字節(jié)跳動、百度、京東等,都已經(jīng)在商業(yè)項目中使用 Flutter,已經(jīng)有很多成功案例。Flutter 第三方庫數(shù)量持續(xù)保持高速增長,有越來越多的人為Flutter生態(tài)貢獻(xiàn)代碼。Flutter 相關(guān)的教程、圖書數(shù)量也在高速增長。綜上,可見Flutter 技術(shù)從第一個測試版發(fā)布到現(xiàn)在,在短短 3 年多時間獲得了巨大的成功,主要原因是:使用Flutter 既能保持很高的開發(fā)效率,又能獲得良好的性能。根據(jù)近幾年的實踐數(shù)據(jù),F(xiàn)lutter 相比原生開發(fā),效能提高近一倍,而性能方面可以接近原生開發(fā)。正是因為Flutter 技術(shù)發(fā)展太快,《Flutter實戰(zhàn)》第1版中的部分內(nèi)容已經(jīng)過時,在讀者朋友們的催促下,才有了第2版。第2版的變化相較第1版,本書主要有以下變化:基于 Flutter 3.0編寫。修改和重構(gòu)了60% 的內(nèi)容,添加了更多的示例,對部分章節(jié)的順序進(jìn)行了調(diào)整,使學(xué)習(xí)的梯度更加合理,以期能夠循序漸進(jìn)地幫助讀者了解Flutter。進(jìn)階篇對Flutter技術(shù)中相對深入但很重要的內(nèi)容進(jìn)行了詳細(xì)介紹,比如與Sliver布局協(xié)議、渲染相關(guān)的 Layer,以及通過定義 RenderObject 的方式來定義組件。在介紹Flutter 核心技術(shù)原理時,添加了很多實例來幫助讀者理解Flutter的布局、繪制等原理。聚焦于Flutter技術(shù)本身,刪除了一些和具體平臺相關(guān)的內(nèi)容,比如Android和iOS的插件開發(fā),以及如何進(jìn)行原生 Flutter混合開發(fā)等。這些內(nèi)容讀者可以去Flutter官網(wǎng)查找相應(yīng)教程。電子版中添加了一些動圖。修改了第1版中的一些錯誤。本書結(jié)構(gòu)本書由淺入深地介紹Flutter技術(shù)原理,分為三篇,共15章,各篇的主要內(nèi)容如下。入門篇(第1~5章),包括Flutter技術(shù)的出現(xiàn)背景和簡介、Flutter的各種Widget以及如何構(gòu)建UI(User Interface,用戶界面)。通過學(xué)習(xí)本篇內(nèi)容,讀者可以掌握如何使用Flutter來構(gòu)建UI界面。進(jìn)階篇(第6~14章),包括可滾動組件、事件機(jī)制、動畫、自定義組件、文件和網(wǎng)絡(luò)、國際化以及Flutter核心原理等。通過學(xué)習(xí)本篇內(nèi)容,讀者可以對Flutter整體構(gòu)建及原理有一個深入的認(rèn)識。實例篇(第15章),本篇主要通過一個簡版的GitHub App來將前面介紹的內(nèi)容串起來,讓開發(fā)者對一個完整的Flutter App開發(fā)流程有所了解。因為Flutter的很多知識點是相互交織的,很難將它們徹底劃分開,所以本書中難免會出現(xiàn)一些相互引用的場景,比如在入門篇介紹進(jìn)度指示器時會用到在進(jìn)階篇才介紹的動畫相關(guān)知識。對于這種情況,會在相應(yīng)的章節(jié)進(jìn)行說明。讀者可以直接跳讀相應(yīng)知識點后再返回,也可以先有個印象,待學(xué)習(xí)到后面相關(guān)章節(jié)時再回頭來看。本書特色我在大學(xué)時讀過侯捷(真名侯俊杰)寫的一些 C 相關(guān)的書籍,在他的《深入淺出MFC》一書中,有一句話讓我印象非常深刻:唯有深入,方能淺出。我非常認(rèn)同這句話,對于一門技術(shù),只有了解得深入,才能用淺顯、通俗的語言描述出來。我在寫作本書時,深入淺出就是一個主要目標(biāo)。所以,本書的目標(biāo)不僅是想告訴讀者如何使用Flutter,而且也非常關(guān)注各個知識點的底層實現(xiàn)以及設(shè)計思想。從本書章節(jié)劃分上來看,入門篇為淺出,進(jìn)階篇則是深入。另外,由于PC客戶端開發(fā)、移動開發(fā)、Web開發(fā)這些經(jīng)驗我都有,而Flutter本質(zhì)上是一個UI系統(tǒng),而UI系統(tǒng)的設(shè)計和實現(xiàn)在大前端開發(fā)下有很多相通之處,所以在闡述本書中的一些知識點時,我也會對比一些其他UI系統(tǒng)(主要是 Android 或 Web)的相應(yīng)實現(xiàn),以便有相關(guān)開發(fā)經(jīng)驗的讀者對比理解。讀者對象至少熟悉一種編程語言的讀者。接觸過PC客戶端開發(fā)、移動開發(fā)或Web前端開發(fā)的讀者。有一定編程基礎(chǔ)的讀者。關(guān)于隨書源代碼隨書源代碼網(wǎng)址:https://github.com/wendux/flutter_in_action_2。由于本書實例中實現(xiàn)了不少通用性較強(qiáng)的組件,為了方便復(fù)用,我將通用性較強(qiáng)的組件都添加到了Flukit開源項目中,這是我維護(hù)的一個Flutter開源組件庫,項目地址是https://github.com/flutterchina/flukit 。勘誤由于Flutter SDK在不斷更新,本書中的部分內(nèi)容(如類的繼承關(guān)系、參數(shù)等)可能會與新版本的Flutter不一致,建議讀者以最新的Flutter SDK為準(zhǔn)。另外,由于水平有限,書中難免有錯誤之處,如果發(fā)現(xiàn)錯誤,可以在本書GitHub項目issue列表中反饋,地址是https:// github.com/flutterchina/flutter-in-action-2nd/issues。另外,你也可以關(guān)注本書電子版(https://book.flutterchina.club),電子版中會定期修正錯誤并更新內(nèi)容。
杜文(網(wǎng)名wendux),F(xiàn)lutter中文網(wǎng)社區(qū)創(chuàng)辦者、Flutter中文社區(qū)開源項目發(fā)起人、掘金知名專欄作者、GitHub社區(qū)知名開發(fā)者,也是dio、flukit、fly.js等多個知名開源項目作者,曾先后就職于百度、小贏科技、字節(jié)跳動,多年從事PC桌面開發(fā)、移動端開發(fā)以及Web開發(fā),對大前端方向有著廣泛的涉獵及豐富的開發(fā)經(jīng)驗。
第一篇 入門篇第1章 起步 21.1 移動開發(fā)技術(shù)簡介 21.2 初識Flutter 91.3 搭建Flutter開發(fā)環(huán)境 131.4 Dart語言簡介 25第2章 第一個Flutter應(yīng)用 362.1 計數(shù)器應(yīng)用示例 362.2 Widget簡介 422.3 狀態(tài)管理 572.4 路由管理 632.5 包管理 712.6 資源管理 742.7 調(diào)試Flutter應(yīng)用 802.8 Flutter異常捕獲 87第3章 基礎(chǔ)組件 923.1 文本及樣式 923.2 按鈕 973.3 圖片及ICON 983.4 單選開關(guān)和復(fù)選框 1053.5 輸入框及表單 1063.6 進(jìn)度指示器 117第4章 布局類組件 1224.1 布局類組件簡介 1224.2 布局原理與約束 1234.3 線性布局 1294.4 彈性布局 1334.5 流式布局 1364.6 層疊布局 1394.7 對齊與相對定位 1424.8 LayoutBuilder、AfterLayout 146第5章 容器類組件 1535.1 填充 1535.2 裝飾容器 1545.3 變換 1565.4 容器組件 1595.5 剪裁 1615.6 空間適配 1635.7 頁面骨架 169第二篇 進(jìn)階篇第6章 可滾動組件 1766.1 可滾動組件簡介 1766.2 SingleChildScrollView 1816.3 ListView 1826.4 滾動監(jiān)聽及控制 1916.5 AnimatedList 1976.6 GridView 1996.7 PageView與頁面緩存 2046.8 可滾動組件子項緩存 2066.9 TabBarView 2106.10 CustomScrollView 和 Sliver 2146.11 自定義 Sliver 2236.12 嵌套可滾動組件NestedScrollView 237第7章 功能型組件 2467.1 導(dǎo)航返回攔截 2467.2 數(shù)據(jù)共享 2477.3 跨組件狀態(tài)共享 2527.4 顏色和主題 2617.5 按需重構(gòu) 2667.6 異步UI更新 2687.7 對話框詳解 272第8章 事件處理與通知 2908.1 原始指針事件處理 2908.2 手勢識別 2928.3 Flutter事件機(jī)制 2978.4 手勢原理與手勢沖突 3108.5 事件總線 3188.6 通知 319第9章 動畫 3269.1 Flutter動畫簡介 3269.2 動畫基本結(jié)構(gòu)及狀態(tài)監(jiān)聽 3309.3 自定義路由切換動畫 3359.4 Hero動畫 3389.5 交織動畫 3439.6 動畫切換組件 3469.7 動畫過渡組件 353第10章 自定義組件 36210.1 自定義組件方法簡介 36210.2 組合現(xiàn)有組件 36310.3 組合實例:TurnBox 36610.4 CustomPaint與Canvas 37010.5 自繪實例:圓形背景漸變進(jìn)度條 37510.6 自繪組件:CustomCheckbox 38210.7 自繪組件: DoneWidget 39310.8 水印組件實例:文本繪制與離屏渲染 396第11章 文件操作與網(wǎng)絡(luò)請求 41311.1 文件操作 41311.2 通過HttpClient發(fā)起HTTP請求 41511.3 HTTP請求庫dio 42211.4 實例:HTTP分塊下載 42411.5 使用WebSocket 42911.6 使用Socket API 43211.7 JSON轉(zhuǎn)Dart Model類 433第12章 Flutter 擴(kuò)展 44412.1 包和插件 44412.2 Flutter Web 446第13章 國際化 44913.1 讓App支持多語言 44913.2 實現(xiàn)Localizations 45313.3 使用Intl包 45513.4 國際化常見問題 459第14章 Flutter核心原理 46114.1 Flutter UI框架 46114.2 Element、BuildContext和RenderObject 46314.3 Flutter啟動流程和渲染管線 46814.4 布局過程 47714.5 繪制一:繪制原理及Layer 49214.6 繪制二:組件樹繪制流程 49614.7 繪制三:Layer 實例 50514.8 繪制四:Compositing 510第三篇 實例篇第15章 一個完整的Flutter應(yīng)用 52415.1 GitHub客戶端示例 52415.2 Flutter App代碼結(jié)構(gòu) 52515.3 Model類定義 52615.4 全局變量及共享狀態(tài) 52915.5 網(wǎng)絡(luò)請求封裝 53215.6 App入口及主頁 53615.7 登錄頁 54715.8 多語言和多主題 549推薦閱讀 553