用 Flutter 極速構建原生應用
內容描述
本書從入門到實踐對谷歌移動UI框架Flutter應用進行了全面的介紹。本書從邏輯上可以分為四部分。第一部分(第1~3章)從開發環境的搭建入手,主要介紹Dart語言基礎與高級應用,從基礎語法到函數、泛型、異步編程、模塊使用等高級內容。第二部分(第4、5章)主要介紹Flutter的核心組件,除了介紹開發Flutter應用必備的圖片、文本、圖標、按鈕等基礎組件外,還詳細介紹了表單組件、佈局技術、交互組件、組件的繪制與修飾、可滾動組件等高級內容。第三部分(第6、7章)重點介紹了Flutter的動畫與手勢、網絡技術及數據解析等內容。第四部分(第8~10章)主要演示了兩個完整案例的開發過程,包括新聞客戶端的開發和游戲開發,此外,還介紹瞭如何將Flutter應用於iOS、Android項目及Web應用程序,旨在幫助讀者將Flutter快速應用於自己的實際項目。 為使讀者高效地掌握本書內容,本書作者還特別錄制了Dark語言的教學視頻,並提供了完整示例的源代碼,讀者可從本書提供的網站自行下載使用。 本書實例豐富,註重應用,適合移動開發人員、對跨平臺感興趣的大學生和培訓機構的學員使用。
目錄大綱
目錄
1章 Flutter開發環境搭建 1
1.1 認識Flutter 1
1.1.1 Flutter的前世今生與應用場景 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 獲取Android Studio開發工具 5
1.3.2 為Android Studio添加Flutter插件 7
1.4 你的一個Flutter應用 9
2章 Dart語言基礎12
2.1 Dart開發環境搭建13
2.1.1 安裝Dart SDK 13
2.1.2 配置Dart編輯器14
2.2 Dart中的變量17
2.2.1 使用變量17
2.2.2 不可變變量18
2.3 Dart中的內置數據類型18
2.3.1 數值類型18
2.3.2 字符串類型21
2.3.3 布爾類型23
2.3.4 列表類型23
2.3.5 字典類型25
2.4 Dart中的運算符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.5 Dart中的流程控制語句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.2 Dart中的類49
3.2.1 自定義類與構造方法49
3.2.2 實例方法51
3.2.3 抽像類與抽象方法53
3.2.4 類的繼承54
3.2.5 運算符重載55
3.2.6 SuchMethod方法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.1 async與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.1 Image圖片組件的應用71
4.1.1 圖片資源的加載72
4.1.2 Image組件的屬性配置73
4.1.3 關於Alignment對象75
4.1.4 關於BoxFit對象75
4.1.5 關於ImageRepeat對象76
4.2 Text文本組件的應用76
4.2.1 使用Text組件76
4.2.2 自定義文本風格77
4.3 Icon圖標組件的應用78
4.3.1 使用Icon組件79
4.3.2 Flutter內置的Icon樣式79
4.4 按鈕相關組件的應用80
4.4.1 按鈕組件的基類MaterialButton 81
4.4.2 RaisedButton的應用81
4.4.3 FlatButton的應用81
4.4.4 下拉選擇按鈕DropdownButton組件的應用82
4.4.5 懸浮按鈕組件的應用84
4.4.6 圖標按鈕IconButton組件的應用85
4.5 界面腳手架Scaffold組件86
4.5.1 Scaffold組件概覽86
4.5.2 Scaffold屬性使用示例86
4.5.3 AppBar組件的應用87
4.5.4 使用ButtomNavigationBar組件88
4.6 FlutterLogo組件的應用90
4.7 Placeholder佔位符組件的應用91
4.8 單組件佈局容器組件的應用91
4.8.1 Container容器組件91
4.8.2 Padding容器組件95
4.8.3 Center容器組件95
4.8.4 Align容器組件96
4.8.5 FittedBox容器組件97
4.8.6 AspectRatio容器組件97
4.8.7 ConstrainedBox容器組件98
4.8.8 IntrinsicHeight與IntrinsicWidth容器98
4.8.9 LimitedBox容器99
4.8.10 Offstage容器99
4.8.11 OverflowBox容器99
4.8.12 SizeBox容器100
4.8.13 Transform容器組件100
4.9 多組件佈局容器組件的應用101
4.9.1 Row容器組件101
4.9.2 Column容器組件102
4.9.3 Flex與Expanded組件103
4.9.4 Stack與Positioned容器組件104
4.9.5 IndexedStack容器組件105
4.9.6 Wrap容器組件106
4.9.7 更多內容可滾動的佈局容器107
5章 Flutter組件進階108
5.1 表單組件的應用108
5.1.1 關於表單容器108
5.1.2 TextFormField詳解109
5.1.3 關於InputDecoration類112
5.1.4 下拉選擇框DropdownButtonFormField組件的應用113
5.1.5 RawKeyboardListener自定義組件接收鍵盤事件113
5.2 Flutter佈局技術114
5.2.1 再看Container容器組件114
5.2.2 Padding佈局116
5.2.3 Center佈局117
5.2.4 FittedBox佈局118
5.2.5 ConstrainedBox佈局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.9 Card組件133
5.3.10 指示類視圖組件135
5.4 對組件進行繪製與修飾136
5.4.1 Opacity組件136
5.4.2 DecoratedBox組件137
5.4.3 裁剪相關組件137
5.4.4 CustomPaint組件140
5.5 內容可滾動組件144
5.5.1 GridView組件的應用144
5.5.2 ListView組件的應用148
5.5.3 SingleChildScrollView組件的應用148
5.5.4 Table組件的應用149
5.5.5 Flow流式佈局組件150
6章 動畫與手勢152
6.1 補間動畫的應用152
6.1.1 關於Animation對象153
6.1.2 AnimationController動畫控制器153
6.1.3 Tween補間對象154
6.1.4 線性動畫與曲線動畫158
6.1.5 Curve時間曲線函數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.2 GIF圖——另一種幀動畫172
6.5 共享元素的動畫173
6.5.1 共享元素動畫示例173
6.5.2 關於Hero對象175
6.6 Lottie動畫175
6.6.1 引入lottie_flutter插件175
6.6.2 使用Lottie動畫176
6.7 Flare動畫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.1 Flutter中的網絡技術186
7.1.1 使用互聯網上的接口服務186
7.1.2 使用HTTPClient進行網絡請求187
7.1.3 HttpClient相關方法188
7.1.4 關於HttpClientRequest請求對象190
7.1.5 關於HttpClientResponse回執對象191
作者介紹
張益琿,TicTalk 合夥人,博客筆名琿少,曾就職於唯品會,參與特賣項目《唯品會》、唯品會美妝項目《唯美》、唯品會返利項目《唯享客》,51CTO學院、CSDN學院簽約講師,麥子學院金牌講師。撰寫關於iOS、Swift、Objective-C、JavaScript語言、Android等相關技術博文300餘篇。開源中國高手問答欄目受邀技術專家,博客訪問量90W+。