天天看點

跨平台 Flutter 開發學習手冊私藏秘籍大公開,你确定不看看?

引言

在 Flutter 剛剛從 Google 剛剛推向 Android 市場的時候,我就開始對 Flutter 開始了學習之路;但由于當時 Flutter 許多東西尚未完善而沒有推出穩定的版本,是以也就沒有對其進行深入的學習,直到如今 Flutter 又重出江湖,在市場上也得到了蓬勃發展及許多業内大佬的力推,我便又再次入坑 Flutter

實作 UI 和互動是進階開發者的必備技能,也是掌握 Flutter 開發的重點;同樣 Flutter 跨平台的特性是原生不能比拟的,更何況還有不弱的性能表現;而性能往往是由生命周期來決定的

何為 Flutter 的生命周期?

如果你是一名開發人員,那麼你一定不會對生命周期感到陌生;當你在學習 Flutter 的時候,Flutter 也有自己的生命周期,隻有通過了解 Flutter 的生命周期,才能知道應該在哪裡來寫業務邏輯

Flutter 生命周期

跨平台 Flutter 開發學習手冊私藏秘籍大公開,你确定不看看?

如上圖所示,Flutter 生命周期大體上可以分為三個階段: 初始化、狀态變化、銷毀;下面依次說明各個階段的工作

初始化階段(插入渲染樹)

  • 對應執行構造方法和 initState

狀态變化階段(在渲染樹中存在)

  • 開新的 widget 或者調用setState方法

銷毀階段(從渲染樹種移除)

  • deactivate和 dispose

如果之前你對 Flutter 有一點點了解的話,你會發現 Flutter 中有兩個主要的 Widget: StatelessWidget(無狀态) 和 StatefulWidget(有狀态)

StatelessWidget

  • 無狀态元件]是不可變的,這意味着它們的屬性不能變化,所有的值都是最終的;可以了解為将外部傳入的資料轉化為界面展示的内容,隻會渲染一次
  • 對于無狀态元件生命周期隻有 build 這個過程;無狀态元件的建構方法通常隻在三種情況下會被調用:小元件第一次被插入樹中,小元件的父元件改變其配置,以及它所依賴的 InheritedWidget 發生變化時

StatefulWidget

  • 有狀态元件持有的狀态可能在 Widget 生命周期中發生變化,是定義互動邏輯和業務邏輯;可以了解為具有動态可互動的内容界面,會根據資料的變化進行多次渲染

實作一個 StatefulWidget 至少需要兩個類:

一個是 StatefulWidget 類 另一個是 Sate 類

  • StatefulWidget 類本身是不可變的,但是 State 類在 Widget 生命周期中始終存在
  • StatefulWidget 将其可變的狀态存儲在由 createState 方法建立的 State 對象中,或者存儲在該 State 訂閱的對象中

Fultter 的優勢在哪裡?

快速開發和疊代

Flutter 自身具有熱修複(熱重載)的功能,盡管有使用的限制,但是它依然能夠為開發過程提供更高的效率;另外,Flutter SDK 還允許我們修複崩潰和繼續從應用程式停止的地方進行調試

頁面流暢、樣式美觀

對于不同的平台(Android和iOS),Flutter 提供了風格不同的控件,以滿足不同平台的設計理念

提供原生性能

Flutter 提供了一種響應式視圖,無須 JavaScript 做橋接;強大的 API 使得實作複雜的頁面效果成為可能;高性能的渲染機制使得 120 FPS 的高頻率 可以輕而易舉的實作;當界面上的圖檔數量越來越多時,與 React Native 相比,Flutter的優勢會越來越明顯

靈活的跨平台開發

Flutter 可以單獨作為開發架構完成整個 App 的開發,也可以與現有原生代碼相結合實作 Hybrid 混合模式的開發

那 Flutter 需要學嗎?

Flutter 抛棄了原生系統控件和 Webview,使用自研高性能渲染引擎來繪制 Widget,預先 (AOT) 編譯,運作時直接執行 Native(arm) 代碼,Dart 代碼執行(在 UI TaskRunner),圖檔下載下傳 (IO TaskRunner),真正的渲染 (GPU TaskRunner) ,同平台的通信等 (Platform TaskRunner 即 Native 概念下的主線程)是互相隔離的

針對布局等的優化;布局計算時單次樹走動即可完成;Relayout Boundary 機制:如果 Child 的 size 是固定的,那麼不會因為 Child 的 Relayout 導緻 Parent ReLayout 等布局優化,都讓 Flutter 脫穎而出

如上所述 Flutter 于谷歌而言,這是他們重新整理 跨平台生态環境 決心的展現,Flutter 所展現的内容,也是谷歌想拓展和維護的方向;對于長期苦惱于 跨平台 選擇的廣大 Android 開發者 而言,Flutter 可謂是谷歌為我們提供的 指路明燈

以目前的開發速度,隻要不出大的纰漏,按部就班的往前推進,在不久的将來, Google 一定可以把 Flutter 平台打造得非常完美,屆時又會改變移動開發技術的格局了

也許,Flutter 系列的部分庫還沒成熟到成為你工作的第一選擇,但是,深入學習 Flutter 元件會為你日常的開發帶來一些想法

總的來說,Flutter 對廣大開發者而言是 利遠遠大于弊的

該如何去學習 Flutter?

這裡給大家推薦一套 Flutter 開發學習路線,并附有相關《Flutter 開發核心知識點及源碼解析筆記》,相信可以給大家提供一些幫助,有需要的朋友們也可以拿去查漏補缺;有需要的小夥伴:可以私信發送 "Flutter 進階" 即可 直達擷取!
跨平台 Flutter 開發學習手冊私藏秘籍大公開,你确定不看看?

手冊内容展示如下

Dart 文法詳解

跨平台 Flutter 開發學習手冊私藏秘籍大公開,你确定不看看?

Flutter 編譯模式

跨平台 Flutter 開發學習手冊私藏秘籍大公開,你确定不看看?

Dart 文法進階

跨平台 Flutter 開發學習手冊私藏秘籍大公開,你确定不看看?

Flutter 線程管理

跨平台 Flutter 開發學習手冊私藏秘籍大公開,你确定不看看?

Flutter 項目實戰

跨平台 Flutter 開發學習手冊私藏秘籍大公開,你确定不看看?

Flutter 性能監控

跨平台 Flutter 開發學習手冊私藏秘籍大公開,你确定不看看?

以上的知識點内容都是免費擷取的,有興趣的小夥伴:可以私信發送 "Flutter 進階" 即可 直達擷取;覺得手冊内容有用的話,大家可以點贊分享一下

繼續閱讀