●第1章Flutter簡介1
1.1Flutter的優勢1
1.2對比其他技術2
1.3Flutter架構3
1.3.1FlutterFramework3
1.3.2FlutterEngine4
1.4開發環境搭建4
1.4.1Mac上的環境搭建4
1.4.2在Mac上獲取SDK並設置環境變量5
1.4.3安裝Xcode與運行模擬器6
1.4.4安裝AndroidStudio7
1.4.5在AndroidStudio上安裝Flutter開發插件8
1.4.6安裝VSCode與Flutter開發插件9
1.4.7IDE的選擇11
1.4.8使用Flutter診斷工具檢查Flutter開發環境11
1.4.9創建Demo工程並體驗熱重載12
1.5Flutter升級14
本章小結15
第2章Dart語言入門16
2.1應用場景16
2.1.1SDK安裝和升級17
2.1.2編寫一個HelloWorld並運行17
2.2變量與常量18
2.2.1變量18
2.2.2常量18
2.2.3內置類型19
2.2.4數值型19
2.2.5數值型操作20
2.2.6字符串21
2.2.7字符串操作21
2.2.8布爾型23
2.2.9List與數組23
2.2.10Map24
2.2.11dynamic和Object25
2.3算符26
2.4異常捕獲27
2.5函數Function28
2.5.1main函數28
2.5.2可選參數28
2.5.3必傳參數29
2.5.4可選的位置參數29
2.5.5默認參數29
2.5.6函數作為參數傳遞30
2.5.7函數作為變量30
2.6異步編程30
2.6.1Future是什麼31
2.6.2async和await31
2.6.3繼承、接口實現和混合33
2.6.4泛型37
本章小結39
第3章一切皆組件40
3.1基礎組件(Basicwidgets)42
3.1.1Text43
3.1.2Icon43
3.1.3Image45
3.1.4Button45
3.1.5FlutterLogo47
3.2素組件(Single-child)48
3.2.1Container48
3.2.2Container的約束49
3.2.3SingleChildScrollView52
3.2.4FittedBox53
3.2.5FractionallySizedBox54
3.2.6ConstrainedBox55
3.2.7Baseline56
3.2.8IntrinsicWidth和IntrinsicHeight58
3.素組件( lti-child)58
3.3.1Scaffold58
3.3.2AppBar59
3.3.3Row和Column61
3.3.4ListView64
3.3.5GridView69
3.3.6CustomScrollView70
3.3.7Flex73
3.3.8Wrap75
3.4狀態管理77
3.4.1Widget樹78
3.4.2Context79
3.4.3StatelessWidget80
3.4.4StatefulWidget80
3.4.5StatefulWidget的組成81
3.4.6State82
3.4.7State生命周期82
3.4.8Widget的專享身份標識:key88
3.4.9InheritedWidget89
3.5包管理93
3.6常用代碼段效果94
3.6.1案例一:側滑效果95
3.6.2案例二:登錄界面96
3.6.3案例三:輪播圖效果96
3.6.4案例四:圖片瀏覽器的相冊效果97
3.6.5案例五:全局主題設置97
本章小結98
第4章事件處理99
4.1原始指針事件99
4.1.1基本用法99
4.1.2忽略事件102
4.2GestureDetector105
4.2.1基本用法105
4.2.2常用事件106
4.2.3拖曳和縮放效果109
4.2.4事件競爭與手勢衝突112
4.2.5手勢識別器114
4.3事件原理與分發機制117
4.4事件通知122
本章小結125
第5章動畫126
5.1動畫原理及概述126
5.1.1Animation127
5.1.2Animatable127
5.1.3AnimationController128
5.1.4Tween130
5.1.5Tween.animate133
5.1.6Curve133
5.2動畫的封裝與簡化136
5.2.1AnimatedWidget136
5.2.2AnimatedBuilder137
5.3Hero動畫141
5.3.1基本用法141
5.3.2實現原理143
5.4交錯動畫145
5.5動畫示例151
5.5.1自定義加載動畫151
5.5.2實現動畫效果153
5.5.3Dialog加載框157
5.5.4測試加載框效果159
本章小結161
第6章使用網絡技術與異步編程162
6.1網絡協議簡介162
6.1.1HTTP協議簡介163
6.1.2HTTP2.0能給我們帶來什麼164
6.1.3HTTPS166
6.2網絡編程167
6.2.1HttpClient167
6.2.2http庫170
6.3JSON解析171
6.3.1JSON轉成Dart對像172
6.3.2一個完整的例子173
6.3.3根據JSON用工具生成實體類175
6.4dio庫176
6.4.1基本用法177
6.4.2dio單例177
6.4.3dio178
6.4.4dio鏈180
6.4.5dio適配器181
6.4.6dio庫總結183
6.5異步編程184
6.5.1isolate184
6.5.2eventloop184
6.5.3線程模型與isolate188
6.5.4創建單獨的isolate190
6.5.5Stream事件流192
本章小結195
第7章路由196
7.1路由簡介196
7.1.1基本用法197
7.1.2靜態路由197
7.1.3動態路由200
7.1.4參數回傳203
7.2路由棧206
7.2.1路由棧詳解207
7.2.2pushReplacementNamed方法207
7.2.3popAndPushNamed方法208
7.2.4pushNamedAndRemoveUntil方法209
7.2.5popUntil方法210
7.3自定義路由210
本章小結214
第8章持久化215
8.1shared_preferences本地存儲215
8.1.1shared_preferences的常用操作216
8.1.2shared_preferences舉例216
8.2SQLite數據庫219
8.2.1sqflite依賴庫簡介220
8.2.2封裝SQLHelpers223
8.2.3sqflite實現員工打卡示例225
8.3文件形式存儲232
8.3.1path_provider簡介233
8.3.2一個簡單的日記本示例233
本章小結236
第9章插件與混合工程237
9.1package237
9.1.1添加package的幾種方式238
9.1.2更新package239
9.1.3創建自己的package240
9.1.4發布package240
9.2理解PlatformChannel241
9.2.1消息傳遞與編解碼器242
9.2.2Platform數據類型支持243
9.2.3MethodChannel簡介243
9.2.4SharedPreferences插件源碼解析245
9.3混合開發247
9.3.1創建Flutter模塊248
9.3.2關聯原生工程248
9.3.3編寫混合工程代碼249
9.3.4熱重載混合端代碼251
9.3.5aar模塊化打包252
9.4FlutterBoost混合方案253
9.4.1框架的由來253
9.4.2使用FlutterBoost改進254
9.4.3FlutterBoost源碼分析255
本章小結263
第10章項目實戰264
10.1實戰一:實現一個招聘類App264
10.1.1項目需求與技術選型264
10.1.2服務端設計265
10.1.3Flutter基礎架構270
10.1.4啟動頁面271
10.1.5使用dio實現網絡請求273
10.1.6公司列表與詳情實現275
10.1.7用WebSocket實現聊天模塊281
10.2實戰二:實現異常上報繫統286
10.2.1實現原理286
10.2.2FlutterError.onError和Zone287
10.2.3異常上報Flutter的實現288
10.2.4異常上報Android端的實現290
10.2.5服務端接收異常上報293
10.3實戰項目源碼299
10.4性能分析與輔助工具300
本章小結304
本書是Flutter從基礎入門到進階實戰的教程書,也是一本面向大前端的新技術書。Flutter是谷歌新推出的一個跨平臺的、開源的UI框架,同時支持iOS繫統和Android繫統開發,並且是谷歌未來新操作繫統Fuchsia的默認開發套件。本書共10章,內容包括Flutter簡介、Dart語言入門、一切皆組件、事件處理、動畫、使用網絡技術與異步編程、路由、持久化、插件與混合工程和項目實戰。本書不僅介紹了Flutter的基本原理、特性,而且在實戰章節全面展示了打造一個完整的基於Flutter的App的流程,包含具體細節、思想流程和代碼實操。本書適合Flutter初學者,對移動開發(iOS/Android)有一定經驗的人員,以及希望了解Flutter原理並進階實戰的相關技術人員。