1. 程式人生 > 其它 >Flutter開發進階學習指南Flutter開發進階學習指南

Flutter開發進階學習指南Flutter開發進階學習指南

Flutter 的起源

Flutter 的誕生其實比較有意思,Flutter 誕生於 Chrome 團隊的一場內部實驗, 谷歌的前端團隊在把前端一些“亂七八糟“的規範去掉後,發現在基準測試裡效能居然提高了 20 倍,機緣巧合下 Flutter 就這麼被立項。

所以 Flutter 是基於前端誕生,同時基於它的誕生緣由,可以看到 Flutter 本身就不會有特別多的語法糖,作為框架它比較“保守”,選擇的 Dart 語言也是保守型的語言。而它的程式設計模式,語法都帶有濃厚的前端色彩,可是它卻最先運用在移動客戶端的開發。

學習 Flutter 的理由

在我接觸在大多 Flutter 萌新裡,有很大一部分其實是“被迫”使用 Flutter

,因為領導或者老闆要求用 Flutter ,所以不得不“欲拒還迎”地開始學習 Flutter,這就是最“有力的”理由之一 :“老闆(領導)要”,除非你選擇“跳槽”飛出三界。

1、個人競爭力層面

下圖是在個人手機用 libChecker 統計出來使用 Flutter 的生產應用。展示這個只要是想表達:Flutter 現在已經不是曾經的小眾框架,這兩年裡它已經逐步成為主流的跨平臺開發框架之一。

所以 Flutter 確確實實可以成為你找工作的一個幫助,當然我並不推薦你從零開始學習 Flutter ,因為 Flutter 本身只是一個跨平臺 UI 框架。

通過 Flutter 可以放大你的業務開發能力,讓你參與到更多的平臺開發中,不過是大前端還是KPI**。當然這些 react-native、 uni-app 也可以帶給你,甚至對於前端開發來說可能更低,那為什麼還要選擇 Flutter 呢?

事實上還有一個有意思的點,對於 Android 原生開發來說,學會 Flutter 等於學會了 70% 以上的 Jetpack Compose 。

2、Flutter 的一致性

事實上從我個人一直比較推薦客戶端學 Flutter ,因為對於前端來說 react-native、 uni-app 確實是性價更高的,當然好像各位的領導和老闆們不是這麼覺得。

那麼使用 Flutter 有什麼額外的好處呢?那就是 Flutter 的效能和一致性

因為 Flutter 作為 UI 框架,它是真的跨平臺! 為什麼要強掉 “真·跨平臺” ,因為和 react-native 、 weex 不同,Flutter 的控制元件不是通過原生控制元件去實現的渲染,而是由 Flutter Engine 提供的平臺無關的渲染能力,也就是 Flutter 的控制元件和平臺沒關係

簡單來說,原生平臺提供一個 Surface 作為畫板,之後剩下的只需要由 Flutter 來渲染出對應的控制元件,而這個過程最終是打包成 AOT 的二進位制完成。

所以 Flutter 的 UI 控制元件可以做到所見即所得,這個對我個人來說是很重要的進步。

3、Flutter 的效能

  • 1、Flutter 在 debug 和 release 下的效能差距是巨大的,因為它們之間是 JIT 和 AOT 的區別。

  • 2、不要在模擬器上測試效能,這個根本沒有意義,因為在手機上 Flutter 會更多依賴 GPU 的能力。

  • 3、混合開發 Flutter 是有效能有影響的,比如在原有 Android 專案裡,把某個模組業務邏輯改用 Flutter 實現,這對效能和記憶體會有很大的考驗,至於為什麼?就是前面說過 Flutter 獨立的控制元件渲染和堆疊管理帶來的負面效果。

  • 4、同一個框架在不同人手下會寫出不一樣的結果,一般情況下對於普通開發者來說,流行的框架一般不會帶來很大的效能瓶頸,反而是開發能力比較多導致專案的瓶頸。

怎麼學 Flutter ?

為了讓大家快速無痛上手 Flutter,在這裡免費分享給大家一份來自阿里大佬Git高星的 Flutter 學習筆記。

2021年還沒上手 Flutter 的移動開發們可以看看這份學習筆記了!

整理大綱

  • 為什麼Flutter是跨平臺開發的終極之選
  • 在Windows上搭建Flutter開發環境
  • 編寫您的第一個 Flutter App
  • Flutter開發環境搭建和除錯
  • Dart語法篇之基礎語法(一)
  • Dart語法篇之集合的使用與原始碼解析(二)
  • Dart語法篇之集合操作符函式與原始碼分析(三)
  • Dart語法篇之函式的使用(四)
  • Dart語法篇之面向物件基礎(五)
  • Dart語法篇之面向物件繼承和Mixins(六)
  • Dart語法篇之型別系統與泛型(七)
  • Flutter中的widget

注:鑑於目前網上沒有比較規範、系統的整理,該學習手冊中的內容都是根據筆者的一個框架在網上進行的蒐集整理。本文開源,僅用於技術交流分享,感謝大佬熊貓先生Dart語法部分的部落格分享,感謝一同整理資料的小夥伴。大家可以動動小手,點波關注,瞭解更多flutter內容!

由於篇幅限制,展示了部分內容截圖,需要這些文件資料的,可以點贊支援一下我,然後【點選這裡】免費獲取。

資料詳情

為什麼Flutter是跨平臺開發的終極之選

  • 這是為什麼?
  • 跨平臺開發
  • 什麼是 Flutter
  • Flutter 的特性
  • Flutter 構建應用的工具
  • 使用 Flutter 構建的熱門應用
  • 構建 Flutter 應用的成本
  • ……

在Windows上搭建Flutter開發環境

  • 使用映象
  • 系統要求
  • 獲取Flutter SDK
  • 編輯器設定
  • Android設定
  • 起步: 配置編輯器
  • 起步: 體驗
  • 體驗熱過載
  • 建立新的應用
  • 執行應用程式
  • ……

第三章 編寫您的第一個 Flutter App

  • 第1步: 建立 Flutter app
  • 第2步: 使用外部包(package)
  • 第3步: 新增一個 有狀態的部件(Stateful widget)
  • 第4步: 建立一個無限滾動ListView
  • 第5步: 新增互動
  • 第6步: 導航到新頁面
  • 第7步:使用主題更改UI
  • ……

第四章 Flutter開發環境搭建和除錯

  • 開發環境的搭建
  • 模擬器的安裝與除錯
  • 開發環境的搭建
  • 模擬器的安裝與除錯
  • ……

第五章 Dart語法篇之基礎語法(一)

  • Hello Dart
  • 資料型別
  • 變數和常量
  • 集合(List、Set、Map)
  • 流程控制
  • 運算子
  • 異常
  • 函式
  • ……

第六章 Dart語法篇之集合的使用與原始碼解析(二)

  • List
  • Set
  • Map
  • Queue
  • LinkedList
  • HashMap
  • Map、HashMap、LinkedHashMap、SplayTreeMap區別
  • 命名建構函式from和of的區別以及使用建議
  • ……

第七章 Dart語法篇之集合操作符函式與原始碼分析(三)

  • Iterable(Iterable類關係圖、Iterable類方法圖……)
  • forEach(介紹、使用方式、原始碼解析……)
  • map(介紹、使用方式、原始碼解析……)
  • any(介紹、使用方式、原始碼解析……)
  • every(介紹、使用方式、原始碼解析……)
  • where(介紹、使用方式、原始碼解析……)
  • firstWhere和singleWhere和lastWhere(介紹、使用方式、原始碼解析……)
  • join(介紹、使用方式、原始碼解析……)
  • take(介紹、使用方式、原始碼解析……)
  • takeWhile(介紹、使用方式、原始碼解析……)
  • ……(內容太多)

第八章 Dart語法篇之函式的使用(四)

  • 函式引數
  • 匿名函式(閉包,lambda)
  • 箭頭函式
  • 區域性函式
  • 頂層函式和靜態函式
  • main函式
  • ……

第九章 Dart語法篇之面向物件基礎(五)

  • 屬性訪問器(accessor)函式setter和getter
  • 面向物件中的變數
  • 建構函式
  • 抽象方法、抽象類和介面
  • 類函式
  • ……

第十章 Dart語法篇之面向物件繼承和Mixins(六)

  • 類的單繼承
  • 基於Mixins的多繼承
  • ……

第十一章 Dart語法篇之型別系統與泛型(七)

  • 可選型別
  • 介面型別
  • 泛型
  • 型別具體化
  • ……

第十二章 Flutter中的widget

  • Flutter頁面-基礎Widget
  • Widget
  • StatelessWidget
  • Stateful Widget
  • State生命週期
  • 基礎widget
  • 文字顯示
  • ……
由於篇幅限制,展示了部分內容截圖,需要這些文件資料的,可以點贊支援一下我,然後【點選這裡】免費獲取。

最後

希望這份資料可以給想要了解 Flutter 並快速上手的朋友幫助以及一個參考方向。

千里之行始於足下,願你我共勉。