1.都2019了,你還沒聽說過Flutter?

CoorChice發表於2019-03-19

目錄傳送門:《Flutter快速上手指南》先導篇

1. 什麼是 Flutter?

Flutter 是一套由 Google 主導開發的全新的、跨平臺的移動應用開發框架。

Flutter 使用簡潔的 Dart 語言來進行開發工作。

它是真正意義上的原生跨平臺開發框架,它完美的做到了一套程式碼,即可在 Android、iOS 兩大主流移動平臺執行。

Google 最神祕的、全新的 大一統 作業系統(據說它有取代 Android 等移動平臺的計劃?)—— Fuchsia,就使用 Flutter 來作為其系統平臺的應用開發框架。

近兩年 Google 在花費很多資源投入到 Flutter 的開發和推廣工作中,難道是為 Fuchsia 的面世而鋪路??

這是目前 Flutter 的架構圖:

從圖中可以清晰的看到,從下到上:

  • Embedder,對接平臺嵌入層

  • Engine,由 c/c++ 編寫的 Flutter 引擎

  • Framework,由 Dart 編寫的 Framework 框架

Flutter 之所以能夠在原生層面上做到跨平臺,是因為它通過在底層使用通用的圖形繪製庫 Skia(繪製內容會被通過 OpenGL提供給 GPU 渲染),封裝了一套全新的、獨立的 UI 框架,即 Flutter。

2. Flutter 的特性

2.1 好的方面

  1. Flutter 可以實現一套程式碼,同時執行在 Android、iOS 兩套移動裝置上。

  2. Flutter 內部實現了一套自有的 UI 渲染引擎,並且提供了一套完整的、豐富的、無關平臺的 UI 庫。 相比其它的跨平臺方案,Flutter 顯然具有更高的效能,更加貼合原生。

  3. 由於 Flutter 應用層使用了 Dart 語言來進行開發。 由於 Dart 同時支援 AOT(Ahead Of Time,預編譯)JIT(Just In Time,即時編譯) 兩種執行模式, 所以在開發階段,Flutter 通過 JIT 模式來獲得 Hot-reload 的特性。 而在釋出階段,Flutter 通過 AOT 模式預編譯獲得高效能的應用程式包。

  1. 熱度持續上升的社群活躍度。這意味著,越來越多的開發者投身到 Flutter 的建設中,這讓開發者對其未來的穩定性和豐富性提供了信心。 這張圖顯示了 Flutter 在 StackOverflow 上的活躍趨勢。

  2. 最新的 Flutter 1.2 版本已經支援了 Android 的 AppBundle,這意味著熱更新,和更小的安裝包成為了可能。

2.2 不好的方面

  1. 由於 Flutter 是純自建的 UI 庫,如果一些自定義的 UI 庫使用了其中一個平臺特性, 那麼就會造成另一個平臺無法使用的情況。

因此,開發者必須時刻謹慎的選擇和編寫自定義的 Widget。

  1. 也許由於 Flutter 剛剛出現,社群相關的工具和庫沒有很豐富。 有時候出現的諸如佈局等錯誤時,會讓人感到很困惑,並且你可能很難在 Google 上搜尋到有用的資訊。

  2. 目前 Debug 還不是最好用的時候,至少和傳統的原生 Debug 相比,還有很大的提高空間。

  3. 相比於 Android 的 xml 建立 UI,目前 Flutter 所提供的 UI 建立方式不是直觀。開發者需要較長的一段時間去適應。

    面對較複雜的佈局,開發者必須時刻保持清醒的意識,不斷的合理的劃分你的程式碼。

總之,Flutter 對於移動端開發效率的提升是不言而喻的,在很多場景下,它使得開發人員只用編寫一套程式碼,就能在 Android 和 iOS 上同時執行。 而且,還能維持較高的效能水平,這是讓人喜愛的。還能說什麼呢,Flutter 值得移動開發者一試的。

目錄傳送門:《Flutter快速上手指南》先導篇

如何找到我?

傳送門:CoorChice 的主頁

傳送門:CoorChice 的 Github


相關文章