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