內容簡介
本書首先介紹Flutter框架和Dart的基礎知識,讀者將學習如何設定開發環境來開始您的Flutter項目,指導讀者設計應用程式的用戶界面和用戶輸入功能。隨著學習進度的深入,讀者將探索navigator小部件來管理您的應用程式路由,並了解如何添加螢幕之間的轉換,將著手開發自己的外掛程式,並了解如何構造良好的外掛程式代碼。本書將幫助您顯示來自Flutter應用程式的地圖,添加標記和互動,並使用谷歌Places API。不僅可以通過添加測試來創建一個沒有bug的應用程式,而且還可以將其部署到蘋果的應用程式商店和谷歌Play上。
圖書目錄
第1部分 Dart語言簡介
第1章 Dart語言概述 3
1.1 Dart語言 3
1.1.1 Dart語言的發展史 4
1.1.2 Dart語言的工作方式 4
1.1.3 Dart語言的基本語法和工具 5
1.2 Flutter與Dart 8
1.2.1 提升生產力 8
1.2.2 易於學習 9
1.2.3 成熟度 11
1.3 Dart語言的結構 12
1.3.1 Dart運算符 13
1.3.2 數據類型和變數 16
1.3.3 類型推斷—動態機制 19
1.3.4 控制流和循環 20
1.3.5 函式 21
1.3.6 數據結構、集合和泛型 24
1.3.7 泛型 24
1.3.8 泛型的使用原因和時機 24
1.3.9 泛型和Dart字面值 25
1.4 Dart中的面向對象編程 26
1.4.1 Dart面向對象特性 26
1.4.2 封裝 27
1.4.3 繼承 28
1.4.4 抽象 28
1.4.5 多態 28
1.5 本章小結 28
1.6 進一步閱讀 29
第2章 Dart中級編程 31
2.1 Dart類和構造方法 31
2.1.1 枚舉類型 32
2.1.2 級聯符號 33
2.1.3 構造方法 34
2.1.4 欄位訪問器—get和set 36
2.1.5 靜態欄位和方法 37
2.1.6 類繼承機制 39
2.2 抽象類、接口和混入 40
2.2.1 抽象類 41
2.2.2 接口 42
2.2.3 混入—向類中添加行為 43
2.2.4 可調用的類、函式和變數 45
2.3 理解Dart庫和包 47
2.3.1 導入機制和庫的使用 47
2.3.2 創建Dart庫 51
2.3.3 Dart包 58
2.3.4 包結構 59
2.3.5 Stagehand—Dart項目生成器 61
2.3.6 pubspec檔案 62
2.3.7 包依賴關係—pub 64
2.4 基於Future和Isolate的異步編程 68
2.4.1 Dart Future 68
2.4.2 Dart Isolate 72
2.5 基於Dart的單元測試 73
2.5.1 Dart test包 74
2.5.2 單元測試 74
2.6 本章小結 76
第3章 Flutter簡介 79
3.1 移動應用程式開發框架間的比較 79
3.1.1 Flutter解決的問題 80
3.1.2 現有框架間的差異 80
3.2 Flutter編譯(Dart) 85
3.2.1 開發編譯 86
3.2.2 發布編譯 86
3.2.3 所支持的平台 86
3.3 Flutter渲染機制 86
3.3.1 Web技術 87
3.3.2 框架和OEM微件 88
3.3.3 自身的渲染機制 88
3.4 微件簡介 89
3.4.1 可組合性 89
3.4.2 不可變性 90
3.4.3 一切均是微件 90
3.5 Hello Flutter 92
3.5.1 pubspec檔案 94
3.5.2 運行生成後的項目 96
3.6 本章小結 99
第2部分 Flutter界面— 一切均為微件
第4章 微件—在Flutter構建布局 103
4.1 無狀態/有狀態微件 103
4.1.1 無狀態微件 103
4.1.2 有狀態微件 104
4.1.3 代碼中的無狀態微件和有狀態微件 105
4.1.4 繼承的微件 109
4.1.5 微件中的key屬性 110
4.2 內建微件 111
4.2.1 基本微件 111
4.2.2 Text微件 111
4.2.3 Image微件 112
4.2.4 材料設計和iOS Cupertino微件 113
4.3 內建布局微件 116
4.3.1 容器 116
4.3.2 樣式和定位 117
4.3.3 其他微件(手勢、動畫和轉換) 117
4.4 利用微件創建UI(Friend Favors管理器應用程式) 117
4.4.1 應用程式螢幕 118
4.4.2 應用程式代碼 118
4.4.3 應用程式主螢幕 119
4.4.4 請求任務螢幕 127
4.5 創建自定義微件 131
4.6 本章小結 132
第5章 處理用戶手勢和輸入 133
5.1 處理用戶手勢 133
5.1.1 指針 133
5.1.2 手勢 134
5.1.3 Material Design微件中的手勢 138
5.2 輸入微件 139
5.2.1 FormField和TextField 139
5.2.2 Form微件 141
5.3 驗證輸入(Form) 143
5.4 自定義輸入和FormField 144
5.4.1 創建自定義輸入 144
5.4.2 自定義輸入微件示例 144
5.5 整合工作 148
5.5.1 任務螢幕 149
5.5.2 任務請求螢幕 154
5.6 本章小結 157
第6章 主題和樣式 159
6.1 主題微件 159
6.1.1 Theme微件 159
6.1.2 主題的套用 162
6.1.3 Platform類 164
6.2 Material Design準則 165
6.2.1 MaterialApp微件 166
6.2.2 Scaffold微件 167
6.2.3 自定義主題 168
6.3 iOS Cupertino 171
6.3.1 CupertinoApp 171
6.3.2 Cupertino套用 172
6.4 使用自定義字型 173
6.4.1 將字型導入Flutter項目中 173
6.4.2 在應用程式中重載默認的字型 175
6.5 基於LayoutBuilder和MediaQuery的動態樣式 175
6.5.1 LayoutBuilder 176
6.5.2 Medi Query 178
6.5.3 其他回響類 181
6.6 本章小結 182
第7章 路由機制—螢幕間的導航 183
7.1 Navigator微件 183
7.1.1 Navigator 183
7.1.2 Overlay 184
7.1.3 路由 184
7.1.4 MaterialPageRoute和CupertinoPageRoute 185
7.1.5 整合操作 185
7.1.6 WidgetsApp方式 189
7.2 命名路由 190
7.2.1 移至命名路由 190
7.2.2 從Route中檢索結果 192
7.3 螢幕過渡 194
7.3.1 PageRouteBuilder 194
7.3.2 自定義過渡轉換操作 195
7.4 Hero動畫 196
7.4.1 Hero微件 196
7.4.2 實現Hero轉換 197
7.5 本章小結 204
第3部分 開發全功能的應用程式
第8章 Firebase外掛程式 207
8.1 Firebase概述 207
8.1.1 設定Firebase 208
8.1.2 將Flutter應用程式連線至Firebase 210
8.2 Firebase身份驗證 214
8.2.1 在Firebase中啟用身份驗證服務 215
8.2.2 身份驗證螢幕 217
8.2.3 利用Firebase進行登錄 218
8.3 基於Cloud Firestore的NoSQL資料庫 222
8.3.1 啟用Firebase上的Cloud Firestore 223
8.3.2 Cloud Firestore和Flutter 224
8.3.3 從Firestore中載入幫助任務 225
8.3.4 更新Firebase中的幫助任務 228
8.3.5 在Firebase上保存一項幫助任務 228
8.4 基於Firebase Storage的Cloud Storage 230
8.4.1 Firebase Storage簡介 231
8.4.2 添加Flutter存儲依賴關係 231
8.4.3 向Firebase上傳檔案 232
8.5 Firebase AdMob和廣告 235
8.5.1 AdMob賬戶 235
8.5.2 創建一個AdMob賬戶 235
8.5.3 Flutter中的AdMob 238
8.5.4 在Flutter中顯示廣告 240
8.6 基於Firebase ML Kit的機器學習 243
8.6.1 向Flutter中添加ML Kit 243
8.6.2 在Flutter中使用標記檢測器 243
8.7 本章小結 246
第9章 構建自己的Flutter外掛程式 247
9.1 創建包/外掛程式項目 247
9.1.1 Dart包和Flutter包 247
9.1.2 啟動一個Dart包項目 248
9.1.3 Flutter外掛程式包 249
9.2 外掛程式項目結構 250
9.2.1 MethodChannel類 251
9.2.2 實現Android外掛程式 252
9.2.3 實現iOS外掛程式 253
9.2.4 Dart API 254
9.2.5 外掛程式包示例 254
9.2.6 使用外掛程式 255
9.3 向包中添加文檔 256
9.3.1 文檔檔案 256
9.3.2 庫文檔 257
9.3.3 生成文檔 257
9.4 發布包 258
9.5 外掛程式開發中的一些建議 258
9.6 本章小結 259
第10章 從Flutter應用程式訪問設備功能 261
10.1 從應用程式啟動一個URL 261
10.1.1 顯示連結 262
10.1.2 打開一個連結 263
10.2 管理應用程式許可權 265
10.2.1 管理Flutter上的許可權 266
10.2.2 使用permission_handler外掛程式 266
10.3 導入聯繫人 267
10.3.1 利用contact_picker導入聯繫人 267
10.3.2 基於permission_handler的聯繫人許可權 270
10.4 集成相機設備 271
10.4.1 利用image_picker拍攝照片 272
10.4.2 基於permission_handler的相機許可權 273
10.5 本章小結 275
第11章 平台視圖和地圖集成 277
11.1 顯示一幅地圖 277
11.1.1 平台視圖 277
11.1.2 創建平台視圖微件 279
11.1.3 google_maps_flutter外掛程式 284
11.1.4 利用google_maps_flutter顯示一幅地圖 286
11.2 向地圖中添加標記 291
11.2.1 Marker類 291
11.2.2 向GoogleMap微件中添加標記 291
11.3 添加地圖互動行為 293
11.3.1 動態添加標記 294
11.3.2 GoogleMapController 295
11.3.3 獲取GoogleMapController 295
11.3.4 地圖相機與位置間的動畫效果 295
11.4 使用Google Places API 296
11.4.1 啟用Google Places API 296
11.4.2 google_maps_webservice外掛程式 297
11.4.3 利用google_maps_webservice外掛程式獲取地址 297
11.5 本章小結 300
第4部分 複雜應用程式的高級資源
第12章 測試、調試和開發 303
12.1 Flutter測試—單元和微件測試 303
12.1.1 微件測試 303
12.1.2 flutter_test包 304
12.1.3 testWidgets()函式 304
12.1.4 微件測試示例 304
12.2 調試Flutter應用程式 306
12.2.1 Observatory工具 306
12.2.2 附加的調試特性 308
12.2.3 DevTools 309
12.3 分析Flutter應用程式 310
12.3.1 Observatory分析器 310
12.3.2 profile模式 311
12.4 Flutter微件樹 313
12.5 應用程式開發的準備階段 314
12.5.1 release模式 315
12.5.2 發布Android應用程式 315
12.5.3 發布iOS應用程式 320
12.6 本章小結 322
第13章 改進用戶體驗 323
13.1 Flutter中的可訪問性以及翻譯功能 323
13.1.1 Flutter的訪問支持 323
13.1.2 Flutter國際化 324
13.1.3 向Flutter應用程式中添加本地化功能 325
13.2 基於平台通道的本地和Flutter間的通信 330
13.2.1 平台通道 331
13.2.2 訊息編碼解碼 333
13.3 創建後台進程 333
13.3.1 Flutter中的compute()函式 334
13.3.2 compute()函式示例 335
13.3.3 後台進程 336
13.3.4 初始化計算 337
13.4 添加Android代碼並在後台運行Dart代碼 339
13.4.1 HandsOnBackgroundProcessPlugin類 340
13.4.2 BackgroundProcessService類 341
13.5 添加iOS代碼並於後台運行Dart代碼 345
13.6 本章小結 350
第14章 微件圖形控制 351
14.1 利用Transform類轉換微件 351
14.1.1 Transform微件 351
14.1.2 Matrix4類 352
14.2 轉換類型 353
14.2.1 旋轉轉換 353
14.2.2 縮放轉換 354
14.2.3 平移轉換 355
14.2.4 組合轉換 356
14.3 轉換微件 357
14.3.1 旋轉微件 357
14.3.2 縮放微件 358
14.3.3 平移微件 359
14.3.4 使用多重轉換 359
14.4 使用自定義畫筆和畫布 360
14.4.1 Canvas類 360
14.4.2 CustomPaint微件 362
14.4.3 CustomPainter對象 363
14.5 示例 364
14.5.1 定義微件 364
14.5.2 定義CustomPainter 365
14.6 射線圖的變化版本 368
14.6.1 定義微件 369
14.6.2 定義CustomPainter 370
14.7 本章小結 373
第15章 外掛程式的動畫效果 375
15.1 動畫簡介 375
15.1.1 Animation類 375
15.1.2 AnimationController類 376
15.1.3 TickerProvider和Ticker 377
15.1.4 CurvedAnimation類 377
15.1.5 Tween類 378
15.2 使用動畫 378
15.2.1 旋轉動畫 378
15.2.2 縮放動畫 382
15.2.3 平移動畫 383
15.2.4 多重轉換和自定義Tween 385
15.2.5 自定義Tween類 387
15.3 使用AnimatedBuilder 390
15.3.1 AnimatedBuilder類 390
15.3.2 再訪動畫 390
15.4 使用AnimatedWidget 393
15.4.1 AnimatedWidget類 394
15.4.2 利用AnimatedWidget重新實現動畫 394
15.5 本章小結 395
作者簡介
本書作者為Alessandro Biessek,但官方不再提供作者詳細信息。該書對應網址為https://www.packtpub.com/mobile/flutter-for-beginners。