Flutter 是一套由 Google 主導開發的全新的、跨平臺的移動應用開發框架。git
Flutter 使用簡潔的 Dart 語言來進行開發工做。github
它是真正意義上的原生跨平臺開發框架,它完美的作到了一套代碼,便可在 Android、iOS 兩大主流移動平臺運行。架構
Google 最神祕的、全新的 大一統 操做系統(聽說它有取代 Android 等移動平臺的計劃😨)—— Fuchsia,就使用 Flutter 來做爲其系統平臺的應用開發框架。框架
近兩年 Google 在花費不少資源投入到 Flutter 的開發和推廣工做中,難道是爲 Fuchsia 的面世而鋪路?🤔工具
這是目前 Flutter 的架構圖:佈局
從圖中能夠清晰的看到,從下到上:post
Embedder,對接平臺嵌入層性能
Engine,由 c/c++ 編寫的 Flutter 引擎ui
Framework,由 Dart 編寫的 Framework 框架
Flutter 之因此可以在原生層面上作到跨平臺,是由於它經過在底層使用通用的圖形繪製庫 Skia(繪製內容會被經過 OpenGL提供給 GPU 渲染),封裝了一套全新的、獨立的 UI 框架,即 Flutter。
Flutter 能夠實現一套代碼,同時運行在 Android、iOS 兩套移動設備上。
Flutter 內部實現了一套自有的 UI 渲染引擎,而且提供了一套完整的、豐富的、無關平臺的 UI 庫。 相比其它的跨平臺方案,Flutter 顯然具備更高的性能,更加貼合原生。
因爲 Flutter 應用層使用了 Dart 語言來進行開發。 因爲 Dart 同時支持 AOT(Ahead Of Time,預編譯) 和 JIT(Just In Time,即時編譯) 兩種運行模式, 因此在開發階段,Flutter 經過 JIT 模式來得到 Hot-reload
的特性。 而在發佈階段,Flutter 經過 AOT 模式預編譯得到高性能的應用程序包。
熱度持續上升的社區活躍度。這意味着,愈來愈多的開發者投身到 Flutter 的建設中,這讓開發者對其將來的穩定性和豐富性提供了信心。 這張圖顯示了 Flutter 在 StackOverflow 上的活躍趨勢。
最新的 Flutter 1.2 版本已經支持了 Android 的 AppBundle,這意味着熱更新,和更小的安裝包成爲了可能。
所以,開發者必須時刻謹慎的選擇和編寫自定義的 Widget。
也許因爲 Flutter 剛剛出現,社區相關的工具和庫沒有很豐富。 有時候出現的諸如佈局等錯誤時,會讓人感到很困惑,而且你可能很難在 Google 上搜索到有用的信息。
目前 Debug 還不是最好用的時候,至少和傳統的原生 Debug 相比,還有很大的提升空間。
相比於 Android 的 xml 建立 UI,目前 Flutter 所提供的 UI 建立方式不是直觀。開發者須要較長的一段時間去適應。
面對較複雜的佈局,開發者必須時刻保持清醒的意識,不斷的合理的劃分你的代碼。
總之,Flutter 對於移動端開發效率的提高是不言而喻的,在不少場景下,它使得開發人員只用編寫一套代碼,就能在 Android 和 iOS 上同時運行。 並且,還能維持較高的性能水平,這是讓人喜好的。還能說什麼呢,Flutter 值得移動開發者一試的。