TOP
0
0
【23號簡體館日】限時三天領券享優惠!!
Flutter開發實例解析(簡體書)
滿額折

Flutter開發實例解析(簡體書)

人民幣定價:119 元
定  價:NT$ 714 元
優惠價:87621
領券後再享88折
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:18 點
相關商品
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

Flutter作為一種新興的跨端開發技術,其語言和框架都是全新的,並且知識體系比較龐大,學習起來有一定的難度。對於初學者來說,最迫切的願望就是能夠快速上手,將理論知識轉化為實際經驗,並在不斷的實踐中擴充完善知識體系。本書旨在幫助Flutter初學者實現這一願望。

《Flutter開發實例解析》突出實戰的特點,通過精心選取的大量實例項目,手把手帶領讀者完成多個Flutter實際應用開發。按照循序漸進的順序對這些項目進行介紹,從最初的簡單番茄計時器、擬物時鐘,到後續的筆記應用、Todo應用、技術頭條應用,逐步帶領讀者開發出具備地圖、定位、網絡、數據庫、狀態管理等功能的復雜應用,最終使讀者能夠掌握Flutter的中高級開發能力。

《Flutter開發實例解析》適合不同層次的移動端開發工程師、前端開發工程師,以及希望快速入門Flutter 移動端開發的讀者閱讀學習。


作者簡介

王睿(網名Maxiee),Android開發工程師,現就職於某一線互聯網公司。曾負責參與多款商業項目移動端的開發,有豐富的移動端開發經驗。過去3年主要研究移動跨端領域,對 React Native、Flutter 等跨端方案均有深入研究,並在商業項目中實現大規模落地。同時也作為核心作者推出自研跨端方案 Hummer,目前已開源,並在業界得到廣泛應用。


名人/編輯推薦

一線移動跨端工程師,一手實戰經驗,通過7個完整實戰項目手把手教你快速入門Flutter

前言

移動端開發領域經過多年發展,已經從新興走向完善。但開發效率不高一直是移動端開發的痛點。其中主要原因在於市面上存在Android、iOS兩套操作系統,對於同一個應用,需要分別進行開發,造成冗餘的工作量。

移動跨端技術是解決這一核心難題的有效手段,也是移動端開發領域中熱門的前沿方向。移動跨端技術的核心在於通過跨端框架縮小平臺差異,提供一套統一的應用開發框架,並實現“一次編寫,處處運行”。

移動跨端技術經過多年的發展,誕生了多種解決方案,其中以Facebook推出的React Native為代表。但從這幾年的實際表現來看,跨端技術並沒有在行業實際應用中得到大規模推廣,而是仍然停留在嘗試、探索階段。尚不成熟。

Flutter作為一種新興的跨端開發技術,充分研究了之前跨端技術難以大規模推廣的難點,並通過先進的技術與巧妙的架構設計實現了突破,將移動跨端技術的發展向前推進了一大步。

Flutter一經推出便獲得廣泛關注,並迅速走熱。目前,越來越多的應用選擇Flutter跨端開發,也有越來越多的成功案例證明,采用Flutter跨端開發後確實提高了移動端的開發效率,實現了提高人效、降低成本的目標。

Flutter推出至今只有兩年多的時間,在如此短的時間裡取得了這麼大的成就,未來的發展潛力是巨大的,甚至能為移動端開發行業帶來新的變革。

在當前這個時間點學習Flutter開發是非常明智的。首先,經過兩年多的發展,Flutter的功能已經日趨完善,其穩定性和開發效率得到了行業的充分認可,業界也有許多成功案例可供參考,消除了人們對這項新技術在可靠性上的顧慮。越來越多的大公司和創業團隊選擇使用Flutter作為核心技術棧。

同時,Flutter作為一門前沿技術,尚未在行業內全面普及,這意味著存在大量潛在業務場景,適合通過Flutter技術進行改進。這為廣大從業者提供了展現自己才華的機會。

對於希望快速實現跨端落地的初創團隊來說,Flutter也是一個優選選項。Flutter技術不僅具備高開發效率,同時能夠開發出高性能、高跨端一致性、體驗豐富的原生應用。對於初創團隊來說,這是一個性價比非常高的解決方案。

Flutter作為一門全新的技術棧,其語言和框架都是全新的,並且知識體系比較龐大,學習起來有一定的難度。對於初學者來說,最迫切的願望是能夠快速上手,將理論知識轉化為實踐經驗,並在不斷的實踐中擴充完善知識體系。

本書旨在幫助Flutter初學者實現這一願望。本書突出實戰的特點,通過精心編排的大量實例項目,手把手帶領讀者完成多個Flutter實際應用開發。按照循序漸進的順序對這些項目進行介紹,由淺入深,從最初的簡單番茄計時器、擬物時鐘,直到後續的筆記應用、Todo應用、技術頭條應用,逐步帶領讀者開發出具備地圖、定位、網絡、數據庫、狀態管理等功能的復雜應用,最終使讀者能夠掌握Flutter的中高級開發能力。

章節內容

本書共8章,通過多個實例項目帶領讀者快速入門Flutter開發。

第1章介紹了移動跨端技術的發展歷程,對Flutter技術進行了整體的綜述,並與同類技術方案進行了對比,最後介紹了如何在不同系統下搭建Flutter開發環境。

第2章介紹了Dart語言語法與Flutter的組件化思想,並介紹了Flutter項目的工程結構。最後以一個番茄鐘實戰項目對整章內容進行鞏固。

第3章通過一個擬物時鐘實戰項目,帶領讀者學習Flutter自定義視圖繪制和動畫開發,同時介紹了Container等基礎布局組件。

第4章通過一個軌跡計步器項目,介紹了如何基於Flutter開源生態,快速擴展Flutter功能,並介紹了地圖、計步器傳感器、定位GPS插件的使用方式,常用的布局組件,以及如何使用Flutter進行界面開發。

第5章通過一個局域網聊天應用,介紹了如何開發網絡應用、如何管理Flutter圖片資源,並模擬了產品功能迭代的流程,以提高Flutter開發的實際經驗。

第6章通過一個Markdown筆記應用,介紹了如何對數據進行持久化、對數據進行JSON序列化,以及在Flutter中如何對Markdown進行輸入與展示,並在此基礎上介紹了應用架構分層的架構設計思想。

第7章通過一個Todo應用,介紹了在Flutter下數據庫的使用方式。整個項目按照現代化前端架構分層的思想進行設計,實現了單一數據源、單向數據流和響應式布局,具備良好的穩定性和擴展性。

第8章通過一個技術頭條項目,實現了一個基於HTTP協議的GitHub客戶端。通過實例介紹了如何進行復雜Feed流的開發。

◆ 前言:◆

前言

移動端開發領域經過多年發展,已經從新興走向完善。但開發效率不高一直是移動端開發的痛點。其中主要原因在於市面上存在Android、iOS兩套操作系統,對於同一個應用,需要分別進行開發,造成冗餘的工作量。

移動跨端技術是解決這一核心難題的有效手段,也是移動端開發領域中熱門的前沿方向。移動跨端技術的核心在於通過跨端框架縮小平臺差異,提供一套統一的應用開發框架,並實現“一次編寫,處處運行”。

移動跨端技術經過多年的發展,誕生了多種解決方案,其中以Facebook推出的React Native為代表。但從這幾年的實際表現來看,跨端技術並沒有在行業實際應用中得到大規模推廣,而是仍然停留在嘗試、探索階段。尚不成熟。

Flutter作為一種新興的跨端開發技術,充分研究了之前跨端技術難以大規模推廣的難點,並通過先進的技術與巧妙的架構設計實現了突破,將移動跨端技術的發展向前推進了一大步。

Flutter一經推出便獲得廣泛關注,並迅速走熱。目前,越來越多的應用選擇Flutter跨端開發,也有越來越多的成功案例證明,采用Flutter跨端開發後確實提高了移動端的開發效率,實現了提高人效、降低成本的目標。

Flutter推出至今只有兩年多的時間,在如此短的時間裡取得了這麼大的成就,未來的發展潛力是巨大的,甚至能為移動端開發行業帶來新的變革。

在當前這個時間點學習Flutter開發是非常明智的。首先,經過兩年多的發展,Flutter的功能已經日趨完善,其穩定性和開發效率得到了行業的充分認可,業界也有許多成功案例可供參考,消除了人們對這項新技術在可靠性上的顧慮。越來越多的大公司和創業團隊選擇使用Flutter作為核心技術棧。

同時,Flutter作為一門前沿技術,尚未在行業內全面普及,這意味著存在大量潛在業務場景,適合通過Flutter技術進行改進。這為廣大從業者提供了展現自己才華的機會。

對於希望快速實現跨端落地的初創團隊來說,Flutter也是一個優選選項。Flutter技術不僅具備高開發效率,同時能夠開發出高性能、高跨端一致性、體驗豐富的原生應用。對於初創團隊來說,這是一個性價比非常高的解決方案。

Flutter作為一門全新的技術棧,其語言和框架都是全新的,並且知識體系比較龐大,學習起來有一定的難度。對於初學者來說,最迫切的願望是能夠快速上手,將理論知識轉化為實踐經驗,並在不斷的實踐中擴充完善知識體系。

本書旨在幫助Flutter初學者實現這一願望。本書突出實戰的特點,通過精心編排的大量實例項目,手把手帶領讀者完成多個Flutter實際應用開發。按照循序漸進的順序對這些項目進行介紹,由淺入深,從最初的簡單番茄計時器、擬物時鐘,直到後續的筆記應用、Todo應用、技術頭條應用,逐步帶領讀者開發出具備地圖、定位、網絡、數據庫、狀態管理等功能的復雜應用,最終使讀者能夠掌握Flutter的中高級開發能力。

章節內容

本書共8章,通過多個實例項目帶領讀者快速入門Flutter開發。

第1章介紹了移動跨端技術的發展歷程,對Flutter技術進行了整體的綜述,並與同類技術方案進行了對比,最後介紹了如何在不同系統下搭建Flutter開發環境。

第2章介紹了Dart語言語法與Flutter的組件化思想,並介紹了Flutter項目的工程結構。最後以一個番茄鐘實戰項目對整章內容進行鞏固。

第3章通過一個擬物時鐘實戰項目,帶領讀者學習Flutter自定義視圖繪制和動畫開發,同時介紹了Container等基礎布局組件。

第4章通過一個軌跡計步器項目,介紹了如何基於Flutter開源生態,快速擴展Flutter功能,並介紹了地圖、計步器傳感器、定位GPS插件的使用方式,常用的布局組件,以及如何使用Flutter進行界面開發。

第5章通過一個局域網聊天應用,介紹了如何開發網絡應用、如何管理Flutter圖片資源,並模擬了產品功能迭代的流程,以提高Flutter開發的實際經驗。

第6章通過一個Markdown筆記應用,介紹了如何對數據進行持久化、對數據進行JSON序列化,以及在Flutter中如何對Markdown進行輸入與展示,並在此基礎上介紹了應用架構分層的架構設計思想。

第7章通過一個Todo應用,介紹了在Flutter下數據庫的使用方式。整個項目按照現代化前端架構分層的思想進行設計,實現了單一數據源、單向數據流和響應式布局,具備良好的穩定性和擴展性。

第8章通過一個技術頭條項目,實現了一個基於HTTP協議的GitHub客戶端。通過實例介紹了如何進行復雜Feed流的開發。

本書特色

書中所選實例均為熱門應用類型,且為完整示例項目。在突出實戰性的同時,本書將Flutter開發的基礎知識安排在各個章節中,知識體系覆蓋了Flutter開發中的常用知識,實現了理論與實踐相互助益的效果。通過這些實戰,讀者能夠快速熟悉上手,並能直接應用到工作中。書中同時也介紹了移動端架構和狀態管理等中高級主題。完成本書學習後,開發者能夠具備中高級Flutter應用開發水平。

本書適合不同層次的移動端開發工程師、前端開發工程師,以及希望快速入門Flutter移動端開發的讀者閱讀學習。

致謝

感謝本書的策劃編輯李培培老師,在她的指導與鼓勵下,我完成了本書的寫作。感謝家人對我的支持與鼓勵,特別感謝我的妻子,在我寫作的這近一年時間裡,一直陪伴著我,為家庭付出很多。感謝領導和同事們的幫助,讓我每天都在成長和進步。

由於本人技術水平有限,書中難免會有疏漏。歡迎大家批評、指正。勘誤信息會發布在作者的個人網站上。

目次

前 言

第1章 Flutter基礎知識 / 1

1.1 移動跨端開發技術 / 2

1.1.1 移動端應用開發的一般流程 / 2

1.1.2 原生開發與跨端開發 / 4

1.1.3 移動跨端開發技術的發展歷程 / 6

1.1.4 跨端技術難點 / 7

1.2 Flutter技術 / 9

1.2.1 Flutter技術簡介 / 9

1.2.2 Flutter整體架構 / 12

1.2.3 Flutter與同類方案對比 / 14

1.3 如何安裝Flutter SDK / 15

1.4 配置Flutter開發環境 / 19

1.4.1 使用Android Studio進行Flutter開發 / 19

1.4.2 使用Visual Studio Code進行Flutter開發 / 21

1.4.3 使用在線環境進行Flutter開發 / 23

1.5 創建第一個Flutter應用Hello World / 24

1.5.1 如何創建Flutter工程 / 24

1.5.2 配置Android 模擬器與真機運行 / 26

1.5.3 配置iOS模擬器與真機運行 / 28

第2章 Dart和Flutter核心概念——零基礎開發番茄鐘計時器 / 30

2.1 番茄鐘計時器開發要點 / 31

2.2 Dart語言快速上手 / 31

2.3 什麼是Flutter組件化 / 32

2.3.1 什麼是組件化思想 / 33

2.3.2 無狀態組件StatelessWidget / 33

2.3.3 有狀態組件StatefulWidget / 35

2.3.4 組件的生命周期 / 35

2.3.5 Material和Cupertino組件庫 / 38

2.4 初識Flutter工程 / 39

2.4.1 Flutter工程結構特點 / 39

2.4.2 App組件——應用架構的基石 / 40

2.4.3 Scaffold 組件——頁面的骨架 / 41

2.5 開發番茄鐘 / 42

2.5.1 使用Center組件進行居中顯示 / 43

2.5.2 Text文本展示組件 / 44

2.5.3 添加Timer 定時器 / 45

2.5.4 為按鈕添加單擊事件控制番茄鐘開始 / 46

2.6 番茄鐘知識擴展 / 48

第3章 自定義視圖和動畫——開發精美的擬物時鐘 / 50

3.1 擬物時鐘開發要點 / 51

3.1.1 使用Container 定制組件展示效果 / 51

3.1.2 使用CustomPaint 創建Flutter自定義視圖 / 57

3.1.3 Flutter動畫入門與擬物時鐘的開發流程 / 59

3.2 基於Canvas和CustomPaint 繪制表盤 / 68

3.2.1 使用Container 繪制外表盤 / 68

3.2.2 使用Container 繪制內表盤 / 70

3.2.3 使用CustomPaint 繪制表盤刻度 / 72

3.3 基於CustomPaint 繪制指針 / 74

3.3.1 使用CustomPaint 繪制時針與分針 / 74

3.3.2 使用rotate Transform偏轉指針 / 77

3.3.3 使用CustomPaint 繪制秒針 / 79

3.3.4 使用CustomPaint 繪制中心裝飾物 / 80

3.4 讓時針動起來 / 82

3.4.1 使用DataTime獲取時間信息 / 82

3.4.2 通過Timer定時器實現時間自動刷新 / 84

3.4.3 通過RotationTransition實現指針轉動動畫 / 84

3.5 擬物時鐘知識拓展 / 86

第4章 地圖+傳感器——開發軌跡計步器 / 88

4.1 軌跡計步器開發要點 / 89

4.1.1 通過Flutter包管理導入擴展包 / 90

4.1.2 Flutter Channel原生通信機制介紹 / 92

4.1.3 Column、Row橫縱向布局組件介紹 / 97

4.1.4 軌跡計步器開發流程 / 101

4.2 創建軌跡計步器首頁 / 101

4.2.1 創建軌跡計步器項目結構 / 101

4.2.2 創建儀表面板組件 / 102

4.3 基於Pedometer庫實現計步功能 / 108

4.3.1 Pedometer計步器庫介紹 / 108

4.3.2 通過Flutter Stream監聽步數 / 109

4.3.3 實現軌跡計步器的計步功能 / 110

4.4 基於geolocator庫實現定位功能 / 111

4.4.1 geolocator定位庫介紹 / 112

4.4.2 實現軌跡計步器的定位功能 / 112

4.4.3 保存軌跡計步器的定位軌跡歷史 / 114

4.5 基於flutter_map庫實現地圖功能 / 115

4.5.1 flutter_map地圖庫介紹 / 115

4.5.2 使用FlutterMap組件創建地圖 / 115

4.5.3 通過MarkerLayerOptions 展示當前位置 / 117

4.5.4 通過PolylineLayerOptions 繪制行進軌跡 / 118

4.6 軌跡計步器知識拓展 / 119

第5章 Socket網絡通信——開發屬於自己的“微信”聊天工具 / 121

5.1 聊天工具開發要點 / 122

5.1.1 Dart Socket網絡通信框架 / 122

5.1.2 Flutter圖片資源管理 / 124

5.1.3 使用ListView展示長列表數據 / 125

5.1.4 通過Navigator 進行頁面跳轉 / 127

5.1.5 聊天工具開發流程 / 130

5.2 創建首頁設置頁面 / 131

5.2.1 搭建聊天工具Flutter工程 / 131

5.2.2 基於NetworkInterface展示本機IP地址 / 133

5.2.3 使用TextField實現Server設置項 / 135

5.2.4 使用TextField實現Client設置項 / 138

5.3 建立Socket通信 / 140

5.3.1 創建消息Model並進行JSON序列化 / 140

5.3.2 創建Socket通信基類BaseSocketCS / 143

5.3.3 基於ServerSocket創建Socket服務器 / 143

5.3.4 基於Socket創建Socket客戶端 / 145

5.3.5 在_MyAppState中接入Socket框架 / 146

5.3.6 雙端Socket通信聯調 / 152

5.4 建立聊天頁面 / 154

5.4.1 基於ListView 實現消息列表 / 155

5.4.2 基於Container 實現消息組件 / 156

5.4.3 基於Navigator 實現頁面跳轉 / 158

5.4.4 使用TextField 實現消息輸入組件 / 159

5.5 使用Image 組件擴展表情包功能 / 161

5.6 聊天工具知識拓展 / 165

第6章 數據持久化——開發一款支持Markdown的“印象筆記” / 166

6.1 Markdown 筆記開發要點 / 167

6.1.1 Flutter下的Markdown展示方式 / 167

6.1.2 基於flutter_markdown實現Markdown 原生渲染 / 168

6.1.3 使用shared_preferences存儲筆記數據 / 170

6.1.4 使用InheritedWidget進行狀態管理 / 171

6.1.5 筆記應用開發流程 / 174

6.2 基於InheritedWidget 開發狀態層 / 175

6.2.1 創建筆記Model / 176

6.2.2 基於基於StatefulWidget創建NoteStore / 177

6.2.3 在_NoteStoreState 中實現筆記增刪改查 / 178

6.2.4 基於InheritedWidget實現_NoteStoreScope / 181

6.2.5 在NoteStore中完善狀態訪問接口 / 182

6.3 創建筆記應用首頁 / 183

6.3.1 使用didChangeDependencies進行狀態關聯 / 183

6.3.2 基於Scaffold實現首頁抽屜導航布局 / 184

6.4 創建筆記編輯頁 / 186

6.4.1 實現_PageEditorState搭建主要布局 / 187

6.4.2 實現getAppBar編輯頁工具欄 / 188

6.4.3 運行編輯頁調試功能 / 190

6.4.4 使用TextField 實現元信息編輯頁 / 191

6.5 創建筆記預覽頁 / 194

6.6 創建編輯頁工具欄 / 195

6.7 Markdown 筆記應用知識擴展 / 198

第7章 SQLite數據庫——開發一款“奇妙清單”Todo 應用 / 200

7.1 Todo 應用開發要點 / 201

7.1.1 使用sqflite 進行SQLite 數據庫開發 / 201

7.1.2 使用Provider進行Flutter復雜狀態管理 / 204

7.1.3 Todo 應用的業務流程 / 208

7.2 基於sqflite 實現SQLite 數據層 / 210

7.2.1 封裝項目Model / 210

7.2.2 封裝待辦事項Model / 211

7.2.3 sqflite 數據庫初始化 / 213

7.2.4 實現項目數據庫操作類ProjectManager / 214

7.2.5 實現待辦事項操作類TodoManager / 215

7.3 基於Provider實現狀態層 / 216

7.3.1 實現待辦事項狀態類TodoState / 216

7.3.2 實現項目狀態類ProjectState / 217

7.3.3 使用MultiProvider對外提供狀態 / 219

7.4 創建Todo 應用首頁 / 219

7.4.1 使用Consumer 實現項目列表 / 220

7.4.2 創建待辦事項列表項組件 / 222

7.4.3 使用Consumer2 實現待辦事項列表 / 225

7.5 創建Todo 應用項目編輯頁 / 227

7.5.1 實現項目編輯頁整體Scaffold 布局 / 227

7.5.2 使用showDatePicker編輯創建和截止時間 / 229

7.5.3 訪問ProjectState 實現項目數據保存 / 231

7.6 創建Todo 應用待辦事項編輯頁 / 232

7.6.1 實現待辦事項編輯頁整體Scaffold 布局 / 232

7.6.2 通過自定義對話框實現項目選擇 / 235

7.6.3 訪問TodoState 實現待辦事項數據保存 / 236

7.7 Todo 應用知識擴展 / 238

第8章 Http+WebView——開發“技術頭條”讓技術先人一步 / 239

8.1 技術頭條開發要點 / 240

8.1.1 Flutter http網絡庫介紹 / 240

8.1.2 GitHub API介紹 / 241

8.1.3 使用json_annotation實現高效序列化 / 242

8.1.4 Flutter集成WebView實現網頁瀏覽 / 244

8.1.5 技術頭條的業務流程 / 245

8.2 基於http 庫實現網絡層 / 246

8.2.1 基於json_annotation創建Model 類 / 247

8.2.2 基於http 庫實現GitHub 網絡訪問類 / 252

8.2.3 基於Service 模式搭建網絡層 / 254

8.3 創建首頁活動Feed 流 / 257

8.3.1 基於CustomScrollView搭建首頁Feed 流布局 / 257

8.3.2 通過SliverPersistentHeader實現吸頂搜索組件 / 258

8.3.3 通過SliverGrid實現九宮格導航 / 261

8.3.4 通過SliverList實現Feed 流內容展示 / 264

8.3.5 接收ScrollNotification事件實現加載更多內容 / 268

8.4 創建GitHub 公共活動Feed 流 / 270

8.4.1 基於ListView公共活動Feed 流布局 / 270

8.4.2 通過listPublicEvents和ScrollNotification 加載數據 / 272

8.5 通過xpath 爬蟲實現GitHub Trending 頁 / 273

8.5.1 通過xpath 解析GitHub Trending 網頁 / 274

8.5.2 通過ListView對GitHub Trending 進行展示 / 276

8.5.3 在createGrid中完成路由跳轉邏輯 / 277

8.6 基於webview_flutter實現WebView頁面 / 278

8.7 技術頭條應用知識擴展 / 279


您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 621
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區