Flutter App 開發 -- 從入門到實戰

Flutter App 開發 -- 從入門到實戰

作者: 李元靜
出版社: 人民郵電
出版在: 2021-10-01
ISBN-13: 9787115568755
ISBN-10: 7115568758
裝訂格式: 平裝
總頁數: 386 頁





內容描述


Flutter是谷歌公司推出的跨平臺開源UI框架,同時支持Android App與iOS App開發,使用這一框架可以大大提高開發效率。本書共14章,系統講解Flutter背景、Dart語言的語法基礎、Flutter組件、狀態管理、事件處理、路由管理、動畫、網絡編程、數據存儲、相機、主題與國際化、混合開發等核心內容,並通過多個案例以及“天氣預報”App和“我的視頻”App兩個完整的實戰項目,將理論知識與實踐結合,提升讀者的實戰開發能力。通過對本書的學習,讀者將會對Flutter框架以及跨平臺開發有全面的認識,並可在實踐中使用Flutter大大提高移動開發效率。
本書適合正在使用Flutter以及對Flutter感興趣的開發人員閱讀和參考。


目錄大綱


第 1章  初識Flutter 1
1.1  Flutter簡介 1
1.2  Flutter的優勢 1
1.2.1  跨平台性 2
1.2.2  高幀率的流暢UI 2
1.2.3  熱重載 2
1.2.4  對開發環境要求不高 2
1.2.5  高性能 2
1.2.6  學習成本低 3
1.3  Flutter的技術特性 3
1.4  Flutter的架構 3
1.4.1  Flutter框架 3
1.4.2  Flutter引擎 4
1.5  開發環境的搭建 4
1.5.1  安裝Android Studio 5
1.5.2  在Android Studio中安裝Flutter開發庫 5
1.5.3  在VSCode中安裝Flutter開發庫 8
1.5.4  搭建Dart語言開發環境 9
1.5.5  通過IntelliJ IDEA搭建純Dart語言開發環境 10
1.6  創建第 一個Flutter項目 11
1.7  體驗熱重載 13
1.8  習題 14
第 2章  Dart語言:一切皆對象 15
2.1  Dart語言簡介 15
2.1.1  一切皆對象 15
2.1.2  面向接口編程 15
2.1.3  類型可選 16
2.2  Hello World 16
2.3  變量與常量 17
2.3.1  變量 17
2.3.2  常量 17
2.4  內置類型 18
2.4.1  數值類型 18
2.4.2  布爾類型 19
2.4.3  字符串類型 20
2.4.4  列表類型 21
2.4.5  鍵值對類型 23
2.4.6  動態類型與Object 23
2.4.7  符號字符 24
2.4.8  符號 25
2.5  運算符 25
2.5.1  三目運算符 25
2.5.2  取商運算符 26
2.5.3  自定義類操作符 26
2.5.4  級聯操作符 27
2.6  get和set方法 27
2.7  異常捕獲 28
2.7.1  throw 28
2.7.2  try-catch 28
2.8  循環語句 29
2.8.1  for循環 29
2.8.2  while循環 30
2.8.3  do-while循環 30
2.9   switch語句 30
2.10  函數 31
2.10.1  main()函數 31
2.10.2  可選參數 31
2.10.3  必選參數 31
2.10.4  可選位置參數 32
2.10.5  默認參數 32
2.10.6  函數作為參數傳遞 32
2.10.7  函數作為變量 33
2.10.8  級聯 33
2.11  異步編程 34
2.11.1  Future 34
2.11.2  async和await 35
2.12  抽象方法和抽像類 36
2.13  接口 37
2.14  繼承 37
2.15  mixin 38
2.16  泛型 40
2.17  庫 42
2.17.1  導入庫 42
2.17.2  拆分庫 43
2.18  習題 43
第3章  Flutter組件 45
3.1  基礎組件 45
3.1.1  Text 46
3.1.2  Button 47
3.1.3  Icon 49
3.1.4  Image 49
3.1.5  FlutterLogo 51
3.2  單一子元素組件 51
3.2.1  Container 51
3.2.2  Padding 54
3.2.3  Align 55
3.2.4  Center 55
3.2.5  FittedBox 55
3.2.6  AspectRatio 57
3.2.7  SingleChildScrollView 57
3.2.8  FractionallySizedBox 58
3.2.9  ConstrainedBox 58
3.2.10  Baseline 59
3.3  多子元素組件 60
3.3.1  Scaffold 60
3.3.2  AppBar 61
3.3.3  Row和Column 62
3.3.4  ListView 63
3.3.5  GridView 66
3.3.6  CustomScrollView 67
3.3.7  CustomMultiChildLayout 68
3.3.8  Stack 69
3.3.9  IndexedStack 70
3.3.10  Table 70
3.3.11  Flex 71
3.3.12  Wrap 72
3.3.13  Flow 73
3.4  其他常用組件的應用 75
3.4.1  TextField 75
3.4.2  TextFormField 77
3.4.3  側滑菜單 79
3.4.4  輪播廣告 81
3.4.5  折疊相冊 82
3.5  習題 85
第4章  狀態管理 86
4.1  狀態管理組件 86
4.1.1  Widget樹 86
4.1.2  Context樹 87
4.1.3  StatelessWidget 87
4.1.4  StatefulWidget 88
4.2  State 89
4.3  Key 94
4.3.1  GlobalKey 94
4.3.2  LocalKey 95
4.4  InheritedWidget 99
4.5  包管理 102
4.6  習題 103
第5章  事件處理 104
5.1  原始指針事件 104
5.1.1  基本用法 104
5.1.2  忽略PointerEvent 106
5.1.3  命中測試 107
5.2  GestureDetector 109
5.2.1  基本用法 109
5.2.2  常用事件 110
5.2.3  GestureDetector實戰 111
5.2.4  手勢衝突 113
5.3  事件通知 115
5.3.1  通知冒泡 115
5.3.2  通知欄消息 117
5.3.3  通知數提醒 118
5.4  習題 119
第6章  路由管理 120
6.1  路由簡介 120
6.1.1  基本用法 120
6.1.2  靜態路由 121
6.1.3  動態路由 123
6.1.4  參數回傳 125
6.2  路由棧 128
6.2.1  路由棧詳解 128
6.2.2  pushReplacementNamed()方法 128
6.2.3  popAndPushNamed()與pushReplacement()方法 129
6.2.4  pushNamedAndRemoveUntil()方法 129
6.2.5  popUntil()方法 131
6.3  fluro庫 131
6.3.1  創建路由管理類 131
6.3.2  實現路由跳轉 133
6.4  習題 135
第7章  動畫 136
7.1  動畫的原理 136
7.1.1  幀 136
7.1.2  插值器 137
7.2  Flutter動畫核心類 138
7.2.1  Animation 138
7.2.2  Animatable 138
7.2.3  AnimationController 138
7.3  Tween類 140
7.3.1  Tween.animate 142
7.3.2  Curve 142
7.4  動畫的封裝與簡化 145
7.4.1  AnimatedWidget 145
7.4.2  AnimatedBuilder 146
7.4.3  ScaleTransition 148
7.5  路由動畫 149
7.5.1  Hero 150
7.5.2  Hero動畫原理 151
7.5.3  自定義路由動畫 153
7.6  組合動畫 156
7.7  動畫實戰 160
7.7.1  實現支*寶“咻一咻”
動畫 160
7.7.2  Flare動畫 164
7.8  習題 167
第8章  網絡編程 168
8.1  網絡協議基礎 168
8.1.1  HTTP 168
8.1.2  URL和URI 171
8.1.3  Get和Post 172
8.1.4  為什麼普及HTTP 2.0 172
8.1.5  HTTPS 174
8.2  網絡編程 175
8.2.1  HttpClient庫 175
8.2.2  http庫 177
8.3  JSON解析 179
8.3.1  手動解析JSON數據 179
8.3.2  手動將JSON數據顯示到界面 180
8.3.3  自動解析 182
8.4  dio庫 186
8.4.1  基本用法 186
8.4.2  單例模式 188
8.4.3  攔截器 189
8.4.4  適配器 192
8.5  異步編程 193
8.5.1  隔離 193
8.5.2  事件循環 194
8.5.3  線程模型 196
8.5.4  事件流 198
8.5.5  創建並使用隔離 200
8.5.6  使用compute()函數 202
8.5.7  FutureBuilder 202
8.6  網絡狀態判斷 204
8.7  習題 207
第9章  數據存儲 208
9.1  SharedPreferences 208
9.1.1  基本操作 208
9.1.2  實現登錄賬號存儲功能 209
9.2  文件存儲 212
9.2.1  基本操作 213
9.2.2  實現留言板功能 214
9.2.3  自定義外部存儲目錄路徑 216
9.2.4  實現文件瀏覽器功能 218
9.2.5  實現文件夾的添加和刪除功能 220
9.3  SQLite數據庫 223
9.3.1  基本操作 224
9.3.2  封裝數據庫操作 230
9.3.3  用sqflite庫實現添加客戶信息功能 233
9.4  訪問服務器端數據庫 237
9.4.1  基本操作 237
9.4.2  訪問云端數據庫實戰 239
9.5  習題 241
第 10章  相機 242
10.1  camera庫 242
10.1.1  基本用法 242
10.1.2  使用takePicture ()方法拍照 245
10.1.3  切換攝像頭 248
10.1.4  錄製視頻 249
10.2  視頻播放 251
10.2.1  本地視頻播放 252
10.2.2  網絡視頻播放 254
10.2.3  視頻資源播放 256
10.2.4  視頻樣式 258
10.3  瀏覽圖片和視頻 262
10.3.1  調用相機拍攝圖片 263
10.3.2  調用相機拍攝視頻 265
10.3.3  選擇圖片與視頻 268
10.3.4  完善自定義相機 269
10.4  下載圖片和視頻 273
10.5  識別二維碼和條形碼 274
10.6  生成二維碼 278
10.6.1  qr_flutter庫的基本用法 278
10.6.2  實現二維碼生成器 279
10.7  習題 280
第 11章  主題與國際化 281
11.1  主題換膚 281
11.1.1  ThemeData組件的屬性 281
11.1.2  全局主題應用 282
11.1.3  局部主題應用 284
11.1.4  主題換膚實戰 285
11.2  第三方庫換膚 286
11.2.1  狀態管理配置 287
11.2.2  變更主題樣式 288
11.2.3  第三方庫換膚實戰 289
11.3  國際化 292
11.3.1  自定義LocalizationsDelegate類 294
11.3.2  通過MyLocalizations類
國際化 296
11.4  第三方庫easy_localization 299
11.4.1  初始化配置 300
11.4.2  手動切換語言實戰 301
11.5  習題 303
第 12章  混合開發 304
12.1
在Android原生項目中嵌入Flutter技術 304
12.1.1  創建Flutter模塊 304
12.1.2  關聯Flutter模塊 304
12.2  Flutter與Android交互 305
12.2.1  Activity嵌入Flutter界面 306
12.2.2  Flutter向Activity傳遞參數 308
12.2.3  Activity向Flutter回傳參數 310
12.2.4  Flutter向Activity回傳參數 312
12.2.5  Flutter與Fragment 313
12.3  FlutterBoost框架 315
12.3.1  FlutterBoost架構 315
12.3.2  配置FlutterBoost框架的開發環境 316
12.3.3  使用FlutterBoost框架進行混合開發 317
12.4  aar模塊化打包 322
12.5  習題 323
第 13章  實戰項目1:“天氣預報”App 324
13.1  需求分析及技術獲取 324
13.1.1  獲取定位信息 324
13.1.2  獲取天氣數據 326
13.1.3  項目使用的庫 326
13.1.4  項目目錄結構 328
13.2  業務功能開發 328
13.2.1  獲取當前城市名稱 328
13.2.2  獲取天氣數據 329
13.2.3  存儲天氣數據 332
13.3  主界面開發 333
13.3.1  背景動畫 333
13.3.2  標題欄 334
13.3.3  當前天氣詳情 335
13.3.4  橫向ListView組件 336
13.3.5  縱向ListView組件 337
13.3.6  HomePage代碼 338
13.4  城市天氣切換 340
13.4.1  路由管理 340
13.4.2  切換城市界面 342
13.5  城市搜索匹配 345
13.5.1  SearchDelegate類 345
13.5.2  實現SearchDelegate類 346
13.5.3  搜索文本框默認顯示內容 348
13.6  導出App 349
13.6.1  使用命令行創建一個簽名文件 349
13.6.2  在android目錄下創建一個key.properties文件 350
13.6.3  修改android/app/build.gradle文件內容 350
13.6.4  導出APK文件 351
第 14章  實戰項目2:“我的視頻”App 352
14.1  實戰項目概述 352
14.1.1  項目結構 352
14.1.2  界面分析 353
14.2  啟動界面與主界面 354
14.2.1  啟動界面 354
14.2.2  主界面 355
14.2.3  主界面內容 357
14.3  網絡與JSON數據 365
14.4  路由管理 368
14.5  視頻播放界面 370
14.6  短視頻 376
14.7  個人中心界面 381


作者介紹


李元靜,移動開發工程師,目前就職於某互聯網金融公司,主導跨平台混合項目開發和兼容性測試工作。他擔任過CSDN知識庫編輯,擁有多年移動開發經驗,對Android App開發、iOS App開發以及跨平台開發有豐富的研究和應用經驗。他熱衷於技術的傳播與分享,撰寫了大量關於移動開發的技術文章,文章閱讀量超過140萬次。




相關書籍

Production-Ready Microservices: Building Standardized Systems Across an Engineering Organization (Paperback)

作者 Susan Fowler

2021-10-01

HTML5 Step by Step (Paperback)

作者 Faithe Wempen

2021-10-01

MongoDB+Express+Angular+Node.js 全棧開發實戰派

作者 柳偉衛

2021-10-01