用Flutter極速構建原生應用( 簡體 字) | |
作者:張益琿 | 類別:1. -> 程式設計 -> 手機程式 -> Flutter |
出版社:清華大學出版社 | 3dWoo書號: 51993 詢問書籍請說出此書號! 有庫存 NT售價: 345 元 |
出版日:11/1/2019 | |
頁數:279 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787302539049 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1章Flutter開發環境搭建 1
1.1認識Flutter 1 1.1.1Flutter的前世今生與應用場景 2 1.1.2安裝Flutter開發框架 2 1.2配置iOS開發環境 3 1.2.1進行AppID的申請 4 1.2.2獲取Xcode開發工具 4 1.3配置Android開發環境 5 1.3.1獲取AndroidStudio開發工具 5 1.3.2為AndroidStudio添加Flutter插件 7 1.4你的第一個Flutter應用 9 第2章Dart語言基礎 12 2.1Dart開發環境搭建 13 2.1.1安裝DartSDK 13 2.1.2配置Dart編輯器 14 2.2Dart中的變量 17 2.2.1使用變量 17 2.2.2不可變變量 18 2.3Dart中的內置數據類型 18 2.3.1數值類型 18 2.3.2字符串類型 21 2.3.3布爾類型 23 2.3.4列表類型 23 2.3.5字典類型 25 2.4Dart中的運算符 26 2.4.1算數運算符 27 2.4.2比較運算符 28 2.4.3類型運算符 28 2.4.4復合運算符 29 2.4.5邏輯運算符 29 2.4.6位運算符 30 2.4.7條件運算符 31 2.4.8級聯運算符 32 2.4.9點運算符 33 2.5Dart中的流程控制語句 33 2.5.1條件分支語句 33 2.5.2循環語句 35 2.5.3中斷語句 36 2.5.4多分支選擇語句 37 2.5.5異常處理 39 第3章Dart高級進階 42 3.1使用函數 43 3.1.1關于main函數 43 3.1.2自定義函數 43 3.1.3定義可選參數的函數 45 3.1.4函數可選參數的默認值 46 3.1.5匿名函數 47 3.1.6詞法作用域 47 3.1.7關于閉包 48 3.2Dart中的類 49 3.2.1自定義類與構造方法 49 3.2.2實例方法 51 3.2.3抽象類與抽象方法 53 3.2.4類的繼承 54 3.2.5運算符重載 55 3.2.6noSuchMethod方法 56 3.2.7枚舉類型 57 3.2.8擴展類的功能——Mixin特性 58 3.2.9類屬性與類方法 61 3.3泛型 61 3.3.1使用泛型 62 3.3.2約束泛型與泛型函數 63 3.4異步編程技術 64 3.4.1async與await關鍵字 64 3.4.2異步與回調 65 3.4.3使用Future對象 66 3.5模塊的使用 67 3.5.1模塊的應用 67 3.5.2模塊命名 68 3.6可調用類與注釋 69 3.6.1可調用類 69 3.6.2關于注釋 69 第4章Flutter基礎組件 71 4.1Image圖片組件的應用 71 4.1.1圖片資源的加載 72 4.1.2Image組件的屬性配置 73 4.1.3關于Alignment對象 75 4.1.4關于BoxFit對象 75 4.1.5關于ImageRepeat對象 76 4.2Text文本組件的應用 76 4.2.1使用Text組件 76 4.2.2自定義文本風格 77 4.3Icon圖標組件的應用 78 4.3.1使用Icon組件 79 4.3.2Flutter內置的Icon樣式 79 4.4按鈕相關組件的應用 80 4.4.1按鈕組件的基類MaterialButton 81 4.4.2RaisedButton的應用 81 4.4.3FlatButton的應用 81 4.4.4下拉選擇按鈕DropdownButton組件的應用 82 4.4.5懸浮按鈕組件的應用 84 4.4.6圖標按鈕IconButton組件的應用 85 4.5界面腳手架Scaffold組件 86 4.5.1Scaffold組件概覽 86 4.5.2Scaffold屬性使用示例 86 4.5.3AppBar組件的應用 87 4.5.4使用ButtomNavigationBar組件 88 4.6FlutterLogo組件的應用 90 4.7Placeholder占位符組件的應用 91 4.8單組件布局容器組件的應用 91 4.8.1Container容器組件 91 4.8.2Padding容器組件 95 4.8.3Center容器組件 95 4.8.4Align容器組件 96 4.8.5FittedBox容器組件 97 4.8.6AspectRatio容器組件 97 4.8.7ConstrainedBox容器組件 98 4.8.8IntrinsicHeight與IntrinsicWidth容器 98 4.8.9LimitedBox容器 99 4.8.10Offstage容器 99 4.8.11OverflowBox容器 99 4.8.12SizeBox容器 100 4.8.13Transform容器組件 100 4.9多組件布局容器組件的應用 101 4.9.1Row容器組件 101 4.9.2Column容器組件 102 4.9.3Flex與Expanded組件 103 4.9.4Stack與Positioned容器組件 104 4.9.5IndexedStack容器組件 105 4.9.6Wrap容器組件 106 4.9.7更多內容可滾動的布局容器 107 第5章Flutter組件進階 108 5.1表單組件的應用 108 5.1.1關于表單容器 108 5.1.2TextFormField詳解 109 5.1.3關于InputDecoration類 112 5.1.4下拉選擇框DropdownButtonFormField組件的應用 113 5.1.5RawKeyboardListener自定義組件接收鍵盤事件 113 5.2Flutter布局技術 114 5.2.1再看Container容器組件 114 5.2.2Padding布局 116 5.2.3Center布局 117 5.2.4FittedBox布局 118 5.2.5ConstrainedBox布局 118 5.2.6抽屜布局 119 5.3高級用戶交互組件 120 5.3.1復選按鈕Checkbox組件 120 5.3.2單選按鈕Radio組件 121 5.3.3切換按鈕Switch組件 122 5.3.4滑塊按鈕Slider組件的應用 123 5.3.5日期時間選擇彈窗 124 5.3.6各種樣式的彈窗組件 127 5.3.7擴展面板組件的應用 130 5.3.8按鈕組相關組件 131 5.3.9Card組件 133 5.3.10指示類視圖組件 135 5.4對組件進行繪制與修飾 136 5.4.1Opacity組件 136 5.4.2DecoratedBox組件 137 5.4.3裁剪相關組件 137 5.4.4CustomPaint組件 140 5.5內容可滾動組件 144 5.5.1GridView組件的應用 144 5.5.2ListView組件的應用 148 5.5.3SingleChildScrollView組件的應用 148 5.5.4Table組件的應用 149 5.5.5Flow流式布局組件 150 第6章動畫與手勢 152 6.1補間動畫的應用 152 6.1.1關于Animation對象 153 6.1.2AnimationController動畫控制器 153 6.1.3Tween補間對象 154 6.1.4線性動畫與曲線動畫 158 6.1.5Curve時間曲線函數 159 6.1.6動畫組件 161 6.1.7同時執行多個動畫 162 6.1.8更多補間動畫 163 6.2物理動畫的應用 164 6.2.1摩擦減速動畫示例 164 6.2.2彈簧減速動畫示例 166 6.2.3重力動畫示例 167 6.3列表動畫 168 6.3.1關于AnimatedList類 168 6.3.2進行列表操作動畫 168 6.4使用幀動畫 170 6.4.1一個簡單的幀動畫示例 170 6.4.2GIF圖——另一種幀動畫 172 6.5共享元素的動畫 173 6.5.1共享元素動畫示例 173 6.5.2關于Hero對象 175 6.6Lottie動畫 175 6.6.1引入lottie_flutter插件 175 6.6.2使用Lottie動畫 176 6.7Flare動畫 178 6.7.1引入Flare插件 178 6.7.2使用Flare動畫 179 6.8手勢交互 180 6.8.1觸摸事件 180 6.8.2手勢事件 182 6.8.3下拉刷新與上拉加載 183 第7章網絡技術與數據解析 185 7.1Flutter中的網絡技術 186 7.1.1使用互聯網上的接口服務 186 7.1.2使用HTTPClient進行網絡請求 187 7.1.3HttpClient相關方法 188 7.1.4關于HttpClientRequest請求對象 190 7.1.5關于HttpClientResponse回執對象 191 7.1.6請求方法 192 7.2JSON數據解析 193 7.2.1手動解析JSON數據 193 7.2.2將網絡數據渲染到頁面 194 7.3數據持久化存儲 197 7.3.1插件的使用 197 7.3.2使用shared_preferences插件 199 7.3.3進行文件的讀寫 201 7.4Flutter中的頁面切換 203 7.4.1使用Navigator進行頁面跳轉 203 7.4.2正向頁面傳值 205 7.4.3反向頁面傳值 208 第8章用Flutter進行新聞客戶端的開發 210 8.1新聞客戶端需求分析與開發前的準備 210 8.1.1新聞客戶端應用需要具備的功能 210 8.1.2開發前的技術準備 211 8.1.3應用項目搭建 212 8.2新聞客戶端主頁的開發 215 8.2.1搭建首頁框架 215 8.2.2“熱門新聞”頁面開發 217 8.2.3開發下拉刷新與上拉加載更多功能 220 8.3首頁網絡請求與數據填充 223 8.3.1進行首頁數據請求 223 8.3.2定義數據模型與數據解析 224 8.3.3填充首頁數據 226 8.4分類模塊的開發 229 8.4.1新聞分類主頁開發 229 8.4.2開發分類列表 231 8.5新聞詳情頁開發 236 8.5.1使用flutter_native_web插件進行網頁渲染 236 8.5.2添加收藏功能 239 8.5.3實現收藏列表 241 第9章用Flutter開發“棍子傳奇”小游戲 245 9.1游戲開始頁面開發 245 9.1.1在Flutter中引入自定義字體 245 9.1.2游戲首頁的搭建 246 9.2游戲核心邏輯開發 251 9.2.1“棍子”道具開發 252 9.2.2英雄移動與勝負判定 253 9.2.3游戲的循環機制 257 9.2.4對游戲進行計分 259 9.2.5游戲的重開 259 9.3對游戲體驗進行優化 261 9.3.1為游戲添加音效 261 9.3.2修改應用圖標 262 9.3.3更多可優化的方向 264 第10章將Flutter用于iOS、Android項目和Web應用程序 265 10.1將Flutter模塊植入已有的iOS工程中 265 10.1.1將Flutter模塊集成進iOS原生項目 265 10.1.2在iOS原生工程中打開Flutter頁面 268 10.2將Flutter模塊植入已有的Android工程中 270 10.2.1集成Flutter模塊到Android原生項目 270 10.2.2在Android原生頁面中打開Flutter頁面 274 10.3使用Flutter開發Web應用程序 275 10.3.1運行第一個FlutterWeb應用程序 276 10.3.2將Flutter移動端工程修改為Web應用程序 277 本書從入門到實踐對谷歌移動UI框架Flutter應用進行了全面的介紹。本書從邏輯上可以分為四部分。第一部分(第1~3章)從開發環境的搭建入手,主要介紹Dart語言基礎與高級應用,從基礎語法到函數、泛型、異步編程、模塊使用等高級內容。第二部分(第4、5章)主要介紹Flutter的核心組件,除了介紹開發Flutter應用必備的圖片、文本、圖標、按鈕等基礎組件外,還詳細介紹了表單組件、布局技術、交互組件、組件的繪制與修飾、可滾動組件等高級內容。第三部分(第6、7章)重點介紹了Flutter的動畫與手勢、網絡技術及數據解析等內容。第四部分(第8~10章)主要演示了兩個完整案例的開發過程,包括新聞客戶端的開發和游戲開發,此外,還介紹了如何將Flutter應用于iOS、Android項目及Web應用程序,旨在幫助讀者將Flutter快速應用于自己的實際項目。
為使讀者高效地掌握本書內容,本書作者還特別錄制了Dark語言的教學視頻,并提供了完整示例的源代碼,讀者可從本書提供的網站自行下載使用。 本書實例豐富,注重應用,適合移動開發人員、對跨平臺感興趣的大學生和培訓機構的學員使用。 隨著移動端開發技術越來越成熟,近些年,工程師們除了致力于解決工程需求外,更多地將精力放在如何更大程度地提高移動端應用的開發效率。開發移動端應用有一個非常令人困擾的問題是平臺不統一,對于主流的iOS與Android平臺,開發其應用使用不同的編程語言和不同的開發框架使得開發周期和成本都提高。Flutter框架就是為處理應用跨平臺問題提供的一種解決方案。
在Flutter之前,已經有許多問世的跨平臺應用開發框架,例如PhoneGap框架與React Native框架,其中有些是基于Web與原生的交互實現跨平臺,有些是基于JavaScript引擎渲染原生頁面實現跨平臺,Flutter則是跨過原生層,直接向GPU提供視圖數據進行頁面的渲染,相比其他框架,Flutter能表現出更好的性能。 對于開發者Flutter框架表現得非常友好,首先其擁有快速開發的特點,Flutter的熱重載機制可以更快地進行UI的構建和測試,添加功能和修改錯誤都可以瞬間得到反饋,這是純原生開發無法企及的。Flutter框架中提供了豐富的UI組件,包括標簽、按鈕、滾動視圖與列表視圖等。使用這些組件可以快速地進行頁面的構建,并且可以在各個平臺上保持一致的體驗。在代碼編寫方面,Flutter選擇Dart作為應用開發語言,其語法簡潔,擁有許多現代化編程語言的特性。同時,Flutter提供了與原生API交互的能力,基本可以實現實際應用的所有需求。 本書結構 本書分為10個章節對Flutter應用開發進行全面的講解。 第1章為入門章節,主要介紹Flutter框架的歷史、發展過程以及應用場景,并且在這一章中將幫助讀者配置開發Flutter應用程序必備的開發環境。 第2章和第3章將介紹Flutter應用開發的語言基礎,主要介紹Dart語言的語法,幫助讀者更快地掌握開發Flutter必備的語言技能,使讀者可以無障礙地進行后續內容的學習。 第4章和第5章著重介紹Flutter框架中UI組件的應用,第4章介紹基礎組件的應用,第5章介紹高級組件的應用。一款完整的應用程序是由多個頁面組合而成的,頁面又是由各種組件組合而成的,Flutter框架中默認提供了非常豐富的組件供開發者使用,并且可以通過插件的方式擴展使用其他第三方組件,如果依然無法滿足需求,那么可以通過自定義組件的方式定制需要使用的組件。通過這兩章的學習,讀者可以自主開發簡單的獨立頁面。 第6章將介紹Flutter中動畫與手勢的相關技術,Flutter是一個優秀的UI跨平臺框架,動畫是UI開發中非常重要的一部分,炫酷的動畫可以給用戶帶來眼前一亮的快感。通過Flutter的手勢系統可以定制出各種復雜情境下的交互邏輯。通過本章的學習,讀者將會對UI開發更加得心應手。 第7章介紹Flutter中的網絡與數據相關技術,網絡是現代應用程序必備的功能,網絡為應用程序提供必要的內容數據,通過使用插件在Flutter中可以方便地對網絡數據進行解析,將解析的數據渲染到頁面上,即可完成一個完整Flutter頁面的開發。 第8章和第9章將安排兩個完整的Flutter應用程序供讀者練習,通過實戰練習綜合應用前面所學習的知識,幫助讀者更快、更牢固地掌握所學到的內容。第8章將通過一個新聞客戶端項目幫助讀者更好地掌握網絡請求、數據解析、頁面渲染等方面的知識。第9章將安排一個小游戲,通過游戲的開發深入理解Flutter動畫框架的應用。通過這兩章的練習,讀者將擁有獨立開發一款完整Flutter應用的能力。 第10章介紹了如何將Flutter快速應用于iOS、Android項目和Web應用程序。 視頻教學與源碼下載 本書提供了完整的源代碼供讀者在學習過程中進行參考,并提供了一套Dart語言極速入門的視頻課程,讀者在學習本書的同時可以參考這些資料。 掃描以下二維碼可以下載本書教學視頻: 掃描以下二維碼可以下載本書源代碼: 如果你在下載過程中遇到問題,請發送郵件,郵件主題是“用Flutter極速構建原生應用”。 致謝 感謝你選擇本書作為學習Flutter應用開發的入門教程,衷心希望本書可以帶給你預期的收獲,幫助你掌握新技術,更具行業競爭力。本書能夠出版還要感謝清華大學出版社的王金柱編輯,在本書寫作的過程中,王金柱編輯提供了非常多有價值的建議與資料,并且對本書中的內容進行了嚴格的校對,沒有他的付出,本書無法順利地到達讀者的手上。 目前,Flutter框架依然在飛速地完善和更新中,本書是作者學習和開發經驗的總結,限于水平和時間,本書肯定存在理解不當的地方,歡迎讀者朋友和業界專家批評指正。 張益琿 2019年8月18日 |