Flutter入門與實踐

Flutter入門與實踐

作者: Biessek Alessandro 李強 譯
出版社: 清華大學
出版在: 2020-06-01
ISBN-13: 9787302557050
ISBN-10: 7302557055
裝訂格式: 平裝





內容描述


本書首先介紹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




相關書籍

大數據可視化

作者 何光威

2020-06-01

HTML+CSS+Javascript網站製作案例教程

作者 張曉景 蘇旬雲

2020-06-01

Mastering Apache Spark 2.x - Second Edition

作者 Romeo Kienzler

2020-06-01