Flutter小白開發——跨平台客戶端套用開發學習路線

Flutter小白開發——跨平台客戶端套用開發學習路線

《Flutter小白開發——跨平台客戶端套用開發學習路線》是2023年6月1日清華大學出版社出版的圖書,作者:王皓。

基本介紹

  • 中文名:Flutter小白開發——跨平台客戶端套用開發學習路線
  • 作者:王皓
  • 出版時間:2023年6月1日
  • 出版社:清華大學出版社
  • ISBN:9787302633365
  • 定價:98.8 元
  • 印次:1-1
  • 印刷日期:2023.05.18
內容簡介,圖書目錄,

內容簡介

《Flutter小白開發——跨平台客戶端應?開發學習路線》以移動平台(iOS/安卓)與Web 平台為例,系統地介紹如何基於Flutter 框架開發跨平台的套用。
《Flutter小白開發——跨平台客戶端應?開發學習路線》分為三大部分,共27 章。第一部分(第1~4 章)主要介紹開發前要做的準備工作,包括安裝命令行界面、開發環境,熟悉Dart 語言和包管理知識;第二部分(第5~14 章)帶領大家熟悉和理解Flutter框架,掌握Flutter 套用開發的基礎知識;第三部分(第15~27 章)是Flutter 實踐,結合服務端套用接口,實現一些真實套用里經常用到的界面,並將做好的套用發布到套用商店。
《Flutter小白開發——跨平台客戶端應?開發學習路線》提供了一套系統、全面的訓練任務,從易到難,輕鬆有趣。從準備開發工具與開發環境開始,熟悉程式語言,了解套用框架,直到具體實踐與套用分發,引領大家逐步掌握Flutter 套用框架的使用技巧,獲得開發移動端套用的基礎能力,對於初學者來說非常友好。

圖書目錄

第一部分 開發準備
第1 章 準備開發 2
1.1 命令行界面 2
1.1.1 任務:Windows 系統下準備命令行界面Cmder 2
1.1.2 任務:在macOS 系統下準備命令行界面Terminal 3
1.1.3 任務:熟悉基本命令 3
1.1.4 理解環境變數目錄 5
1.1.5 知道命令來自哪裡 5
1.1.6 命令行工具的幫助信息 6
1.1.7 命令行界面的配置檔案 6
1.2 代碼編輯器 7
1.3 原始碼管理 8
第2章 開發環境 9
2.1 下載開發工具包 9
2.1.1 任務:macOS 系統下安裝Flutter 9
2.1.2 任務:Windows 系統下安裝Flutter 10
2.1.3 任務:配置使用國內鏡像 11
2.2 準備iOS 與macOS 套用開發環境 11
2.2.1 任務:安裝Rosetta 12
2.2.2 任務:安裝Homebrew 12
2.2.3 任務:安裝與準備Xcode 12
2.3 準備Android平台套用開發環境 13
2.4 準備設備模擬器 14
2.5 準備Web 套用開發環境 15
2.6 準備代碼編輯器VSCode 15
2.7 創建Flutter 項目 16
2.7.1 任務:創建並運行Flutter 項目 16
2.7.2 任務:清理項目與原始碼管理 18
2.8 問題與思考 18
第3章 熟悉Dart 語言 21
3.1 準備工作 21
3.2 變數 22
3.2.1 var 22
3.2.2 final 22
3.2.3 const 23
3.2.4 理解var、final 與const 的區別 23
3.3 類型 25
3.4 內置類型 25
3.4.1 字元串 25
3.4.2 數字 26
3.4.3 布爾值 26
3.4.4 列表 27
3.4.5 集合 27
3.4.6 映射 28
3.5 函式 28
3.5.1 創建函式 29
3.5.2 執行函式 29
3.5.3 函式參數 29
3.5.4 函式有多個參數 29
3.5.5 有名字的參數 30
3.5.6 必填參數 30
3.5.7 參數默認值 31
3.5.8 函式返回值 31
3.6 流程控制 31
3.6.1 if 語句 32
3.6.2 switch 語句 32
3.7 異常 34
3.7.1 拋出異常(throw) 34
3.7.2 捕獲異常(catch/on) 34
3.8 類 35
3.8.1 定義一個類 36
3.8.2 實例化一個類 36
3.8.3 屬性 36
3.8.4 構造方法 37
3.8.5 this 關鍵字 37
3.8.6 帶名字的構造方法 38
3.8.7 方法 38
3.8.8 繼承 39
3.8.9 類屬性 39
3.8.10 類方法 40
3.9 泛型 40
3.10 庫 41
3.10.1 使用內置庫 41
3.10.2 指定庫前綴 41
3.10.3 導入部分庫 42
3.10.4 導入開發者個人庫里的資源 42
3.11 Future 42
3.11.1 定義異步函式 43
3.11.2 使用異步函式提供的值 43
3.11.3 處理異步函式遇到的錯誤 44
第4章 包管理 45
4.1 包(Package) 45
4.2 pubspec.yaml 檔案 45
4.3 安裝包 46
4.3.1 解決包依賴問題 46
4.3.2 dependencies 屬性 46
4.3.3 版本號 47
4.3.4 pubspec.lock 檔案 47
4.3.5 package_config.json 檔案 47
4.4 使用包 48
4.5 升級包 48
第二部分 Flutter基礎
第5章 基本部件 52
5.1 準備 52
5.1.1 任務:準備項目(widget) 52
5.1.2 任務:準備套用入口 52
5.2 小部件(Widget) 53
5.3 自定義一個無狀態的小部件 54
5.4 Text(文本) 56
5.5 RichText(富文本) 58
5.6 Image(圖像) 59
5.6.1 任務:顯示資源包里的圖像 60
5.6.2 任務:顯示來自網路的圖像 61
5.6.3 任務:調整圖像的顯示 62
5.7 Container(容器) 63
5.7.1 任務:使用Container 小部件 64
5.7.2 任務:裝飾容器 66
5.8 整理項目 69
第6章 頁面結構 70
6.1 準備項目(page-structure) 70
6.2 MaterialApp 70
6.2.1 任務:創建Material 套用 70
6.2.2 任務:使用圖示(Icon) 71
6.2.3 任務:使用按鈕(ElevatedButton) 72
6.2.4 任務:定製套用的主題樣式 73
6.3 Scaffold(頁面結構) 75
6.4 AppBar(套用欄) 76
6.5 TabBar(標籤欄) 77
6.6 BottomNavigationBar(底部導航欄) 79
6.6.1 任務:設定底部導航欄 79
6.6.2 任務:把App 轉換成有狀態小部件(StatefulWidget) 80
6.6.3 任務:單擊底部導航欄項目,切換當前活動項目 81
6.6.4 任務:單擊底部導航欄項目,切換顯示小部件 82
6.6.5 任務:單擊底部導航欄項目,動態顯示或隱藏AppBar 83
6.7 FloatingActionButton(漂浮動作按鈕) 84
6.8 整理項目 85
第7章 定義部件 86
7.1 準備 86
7.1.1 任務:準備項目(define-widget) 86
7.1.2 任務:配置VSCode 編輯器代碼片斷 87
7.2 AppPageHeader(頁面頭部) 88
7.3 AppLogo(套用標誌) 89
7.4 AppPageMain(頁面主體) 90
7.5 PostIndex(內容索引) 93
7.6 AppPageBottom(頁面底部) 94
7.7 AppFloatingActionButton(漂浮動作按鈕) 96
7.8 目錄結構 97
7.9 小部件樹 97
7.10 整理項目 98
第8章 彈窗對話 99
8.1 準備項目(modal-dialog) 99
8.2 BottomSheet(底部面板) 99
8.2.1 任務:顯示頁面底部面板 99
8.2.2 任務:用漂浮動作按鈕顯示與關閉底部面板 101
8.3 AlertDialog(警告對話框) 103
8.4 SnackBar(訊息提示欄) 105
8.5 Drawer(邊欄抽屜) 106
8.5.1 任務:使用邊欄抽屜 107
8.5.2 任務:設定邊欄抽屜上顯示的內容(ListView 與ListTile) 108
8.6 PopupMenuButton(彈出選單按鈕) 111
8.7 整理項目 113
第9章 頁面布局 114
9.1 準備 114
9.1.1 任務:準備項目(layout) 114
9.1.2 任務:準備練習頁面 114
9.2 約束 116
9.2.1 任務:理解小部件的約束 116
9.2.2 任務:準備一個布局演示項目小部件 119
9.2.3 任務:使用安全區域(SafeArea)和尺寸盒子(SizedBox) 120
9.3 Align(對齊) 121
9.4 Column(欄/列) 122
9.5 Row(行/排) 124
9.6 Expanded(擴展空間) 126
9.7 Stack(堆) 127
9.8 Positioned(定位) 128
9.9 整理項目 128
第10 章 表單元素 129
10.1 準備 129
10.1.1 任務:準備項目(input) 129
10.1.2 任務:準備練習小部件PlaygroundInput 129
10.2 ElevatedButton(按鈕) 130
10.3 TextField(文本欄位) 133
10.3.1 任務:使用文本欄位小部件 133
10.3.2 任務:獲取文本欄位里的數據 135
10.4 TextFormField(文本表單欄位) 137
10.4.1 任務:使用文本表單欄位 137
10.4.2 任務:驗證文本表單欄位數據 138
10.5 TextEditingController(文本編輯控制器) 141
10.6 Form(表單) 143
10.7 問題與思考 144
10.8 整理項目 144
第11章 路由導航(一) 145
11.1 準備 145
11.1.1 任務:準備項目(routing) 145
11.1.2 任務:準備導航與路由演示小部件 145
11.2 路由與導航器 146
11.3 用命令式管理路由 146
11.4 默認路由 149
11.5 路由表 151
11.6 生成路由時的回調 152
11.6.1 任務:使用生成路由回調onGenerateRoute 152
11.6.2 任務:在路由名字中提取參數 154
11.7 問題與思考 157
11.8 整理項目 157
第12章 狀態管理 158
12.1 準備 158
12.1.1 任務:準備項目(state-management) 158
12.1.2 任務:準備狀態管理演示小部件 158
12.1.3 任務:安裝provider 159
12.2 準備數據 160
12.3 提供數據 161
12.3.1 確定提供數據的位置 162
12.3.2 任務:用Provider 提供數據與方法 162
12.4 使用數據 163
12.5 數據變化 165
12.5.1 任務:用ChangeNotifierProvider提供數據與方法 165
12.5.2 任務:在小部件里使用Provider 提供的數據與方法(Consumer) 167
12.6 問題與思考 168
12.7 整理項目 168
第13章 路由導航(二) 169
13.1 準備項目(routing_2) 169
13.2 頁面 169
13.2.1 任務:使用Navigator 聲明式接口(Pages API) 169
13.2.2 任務:使用MultiProvider 提供多個數據類 171
13.2.3 任務:動態添加與移除頁面 173
13.3 路由器 176
13.3.1 任務:創建路由器代表(RouterDelegate) 176
13.3.2 任務:使用路由器管理路由(Router) 177
13.3.3 任務:套用狀態變化時通知Router 重建Navigator 180
13.4 路由配置 181
13.4.1 調試Web 套用 181
13.4.2 任務:定義路由配置類型 181
13.4.3 任務:把路由信息轉換成自定義的路由配置(parseRouteInformation) 182
13.4.4 任務:根據路由配置數據修改套用狀態(setNewRoutePath) 184
13.4.5 任務:把路由配置轉換成路由信息(restoreRoute Information) 185
13.5 問題與思考 188
13.6 整理項目 188
第14章 網路請求 189
14.1 準備 189
14.1.1 任務:準備項目(http) 189
14.1.2 任務:準備網路請求演示小部件 189
14.2 http 190
14.2.1 任務:安裝http 並使用資源 190
14.2.2 任務:請求服務端接口獲取數據 191
14.2.3 任務:將JSON 數據轉換成自定義類型 193
14.2.4 任務:請求服務端接口創建內容(用戶) 195
14.2.5 任務:傳送用戶登錄請求 197
14.2.6 任務:請求服務端接口更新內容(用戶) 200
14.3 序列化 202
14.4 問題與思考 205
14.5 整理項目 205
第三部分 Flutter實踐
第15章 內容列表 208
15.1 準備項目(list) 208
15.2 套用配置 208
15.3 創建內容列表 210
15.3.1 任務:創建內容列表小部件(PostList) 210
15.3.2 任務:定義並提供獲取內容列表數據方法 211
15.3.3 任務:請求內容列表數據 213
15.3.4 任務:定義內容數據類型 214
15.3.5 任務:轉換生成一組內容(Post)類型的數據 217
15.3.6 任務:使用ListView 構建內容列表視圖 220
15.4 整理項目 221
第16章 列表項目 222
16.1 準備項目(list-item) 222
16.2 定義列表項目 222
16.2.1 任務:創建內容列表項目小部件(PostListItem) 222
16.2.2 任務:定義內容媒體小部件(PostMedia) 224
16.2.3 任務:定義內容頭部小部件(PostHeader) 226
16.2.4 任務:定義用戶頭像小部件(UserAvatar) 228
16.2.5 任務:定義內容動作小部件(PostActions) 230
16.3 問題與思考 233
16.4 整理項目 234
第17章 內容頁面 235
17.1 準備項目(post) 235
17.2 開發單個內容頁面 235
17.2.1 任務:處理單擊內容列表項目圖像 235
17.2.2 任務:定義單個內容數據模型(PostShowModel) 237
17.2.3 任務:單擊內容項目圖像時顯示內容頁面 240
17.2.4 任務:定義內容頁面主體小部件(PageShowMain) 243
17.2.5 任務:定義內容正文小部件(PostContent) 247
17.2.6 任務:定義內容標籤小部件(PostTags) 249
17.2.7 任務:配置路由器處理內容頁面 251
17.2.8 任務:請求內容頁面需要的數據 254
17.3 問題與思考 256
17.4 整理項目 259
第18章 驗證身份 260
18.1 準備項目(auth) 260
18.2 登錄頁面 260
18.2.1 任務:添加用戶登錄頁面 260
18.2.2 任務:準備登錄表單小部件(AuthLoginForm) 263
18.3 請求登錄 270
18.3.1 任務:定義用戶登錄相關類型(LoginData,Auth) 270
18.3.2 任務:自定義網路請求異常(HttpException) 271
18.3.3 任務:定義身份驗證模型(AuthModel) 272
18.3.4 任務:請求用戶登錄 274
18.4 問題與思考 276
18.5 整理項目 276
第19章 狀態管理 277
19.1 準備項目(state-management_2) 277
19.2 改造創建Provider 的方式 277
19.2.1 任務:使用Provider 的value 構造方法提供值 277
19.2.2 任務:在單獨的檔案里定義要提供的Provider 278
19.3 在用戶設備上存取數據 279
19.3.1 任務:用shared preferences 外掛程式記住登錄狀態 279
19.3.2 任務:套用啟動以後恢復登錄狀態 282
19.4 使用代理Provider 解決依賴 285
19.4.1 任務:定義套用服務與接口客戶端(AppService 和ApiHttpClient) 285
19.4.2 任務:用ChangeNotifierProxyProvider解決依賴 287
19.4.3 任務:改造PostIndexModel 用apiHttpClient 傳送請求 288
19.5 整理項目 289
第20章 點讚內容 290
20.1 準備項目(like) 290
20.2 點讚內容相關操作 290
20.2.1 任務:使用GestureDetector 處理手勢動作 290
20.2.2 任務:定義點讚內容模型 291
20.2.3 任務:定義取消點讚模型 292
20.2.4 任務:定義提供點讚的Provider 293
20.2.5 任務:處理用戶點讚動作 294
20.2.6 任務:處理用戶取消點讚動作 296
20.3 問題與思考 298
20.4 整理項目 298
第21章 列表布局 299
21.1 準備項目(post-list-layout) 299
21.2 內容列表布局 299
21.2.1 任務:準備熱門內容列表 299
21.2.2 任務:準備內容列表布局相關數據與方法 301
21.2.3 任務:設定與存儲內容列表布局 302
21.2.4 任務:準備格線內容列表 303
21.2.5 任務:準備多種布局的內容列表項目 305
21.2.6 任務:恢復內容列表布局 308
21.3 問題與思考 310
21.4 整理項目 312
第22章 發布內容表單 313
22.1 準備項目(post-create) 313
22.2 創建並發布內容 313
22.2.1 任務:定義創建內容數據模型(PostCreateModel) 313
22.2.2 任務:改進AppTextField 自定義小部件 316
22.2.3 任務:重新定義異常 317
22.2.4 任務:準備創建內容頁面(PostCreate) 318
22.2.5 任務:定義創建內容表單小部件(PostCreateForm) 319
22.2.6 任務:發布內容 323
22.3 問題與思考 326
22.4 整理項目 326
第23章 選擇並上傳檔案 327
23.1 準備項目(file-upload) 327
23.2 選擇檔案 327
23.2.1 任務:安裝檔案選擇器外掛程式(file_picker) 327
23.2.2 任務:選擇照片套用里的圖像檔案 328
23.3 上傳檔案 330
23.3.1 任務:準備上傳檔案用的請求 330
23.3.2 任務:定義上傳檔案需要的相關數據與方法 331
23.3.3 任務:定義選擇圖像檔案小部件(PostCreateMedia) 332
23.3.4 任務:使用進度指示器(CircularProgressIndicator) 335
23.3.5 任務:用選擇的檔案名稱稱作為內容默認標題 335
23.3.6 任務:提示是否保留未發布內容 336
23.3.7 任務:創建內容後上傳檔案 339
23.4 整理項目 340
第24章 主題樣式 341
24.1 準備項目(theme) 341
24.2 設定主題樣式 341
24.2.1 任務:設定主題顏色 341
24.2.2 任務:設定圖示主題(IconThemeData) 343
24.2.3 任務:設定文本主題(TextTheme) 344
24.2.4 任務:設定套用欄主題(AppBarTheme) 346
24.2.5 任務:根據平台暗色模式設定小部件樣式 348
24.2.6 任務:設定標籤欄主題(TabBarTheme) 350
24.2.7 任務:設定底部導航欄主題(BottomNavigationBarThemeData) 351
24.2.8 任務:設定訊息提示欄主題(SnackBarTheme) 353
24.2.9 任務:設定按鈕主題(ElevatedButtonThemeData) 354
24.3 問題與思考 355
24.4 整理項目 356
第25章 發布套用 357
25.1 準備項目(release) 357
25.2 在蘋果套用商店發布套用 357
25.2.1 任務:加入蘋果開發者計畫 357
25.2.2 任務:用真實設備調試套用(iOS) 358
25.2.3 任務:套用小圖示(iOS) 360
25.2.4 任務:套用啟動螢幕(iOS) 361
25.2.5 任務:註冊套用ID 362
25.2.6 任務:在App Store Connect 創建套用 363
25.2.7 任務:構建套用(iOS) 364
25.2.8 任務:修正問題後重新構建 366
25.2.9 任務:提交發布套用(App Store Connect) 367
25.2.10 任務:通過TestFlight 安裝測試套用 369
25.3 問題與思考 370
25.4 整理項目 371
第26章 註冊用戶 372
26.1 準備項目(user-create) 372
26.2 註冊用戶界面 372
26.2.1 任務:準備創建用戶模型(UserCreateModel) 372
26.2.2 任務:用Provider 提供創建用戶模型 373
26.2.3 任務:準備創建用戶表單小部件(UserCreateForm) 374
26.2.4 任務:修改用戶未登錄時的頁面 376
26.2.5 任務:修改套用重新編譯並提交審核 378
26.3 整理項目 380
第27章 下一站 381

熱門詞條

聯絡我們