Flutter入門與實踐

[美]亞歷山德羅·比薩克 著 李強 譯

  • 出版商: 清華大學
  • 出版日期: 2020-06-01
  • 售價: $774
  • 貴賓價: 9.5$735
  • 語言: 簡體中文
  • ISBN: 7302557055
  • ISBN-13: 9787302557050
  • 相關分類: Flutter

立即出貨 (庫存 < 3)

  • Flutter入門與實踐-preview-1
  • Flutter入門與實踐-preview-2
  • Flutter入門與實踐-preview-3
Flutter入門與實踐-preview-1

買這商品的人也買了...

商品描述

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