Flutter介紹與前景

瞭解

目前對Flutter的理解還是很少的,只是想作爲一個筆記,在不斷理解的基礎上進行不斷的修改與完善,查漏補缺,看看自己學之前與學之後是的理解是一個什麼狀態。

Flutter介紹

Flutter 是谷歌的移動端 UI 框架,可在極短的時間內構建 Android 和 iOS 上高質量的原生級應用。 Flutter 可與現有代碼一起工作, 它被世界各地的開發者和組織使用, 並且 Flutter 是免費和開源的.

這是官網的介紹,大標題是“以極短的時間構建優雅的原生級應用”,可以瞭解到Flutter是一個框架,通過這個框架可以使用Dart語言通過一套代碼構建Android和iOS應用程序。

Flutter裏面同時提供了兩種UI庫的風格,第一種肯定是Material Design風格,還要就是Cupertino風格,也就是iOS中採用的風格。

個人理解應該是Flutter封裝了一套完整的UI的API,在開發時候可以直接使用,通過官網介紹瞭解應該也可以直接調用Android和iOS中的原生API。

爲什麼使用Dart語言?

個人對其他語言並沒有瞭解那麼深,這個問題只是說下自己的想法和在網上查到的一些人的見解。

首先我一眼看上去,感覺Dart的格式並不友好,相比Kotlin覺得更是可讀性差很多,據知乎上一位大神說和Flutter的工程師諮詢,是因爲Dart的團隊距離他們很近,能很好的得到支持,不知道是否玩笑。用Dart代碼寫頁面還是很容易理解的,至於與mxl相比哪種方式更好現在我還體會不好,因爲還沒有深度是使用Dart。

Dart同時支持AOT編譯和JIT編譯,Dart的編譯和執行不僅非常靈活,而且速度很快。還有我覺得Dart是相對容易學習的。用Flautter的時候還支持熱重載,這相比Instant Run的體驗要好很多的,確實提高了效率,不會因爲只改了一點頁面而編譯好久的狀況。Dart是基於單線程模型的語言,但是也有自己的機制叫isolate。之間無法直接共享內存,這也就是避免了大部分使用鎖的情況。

還有就是這是Google自己的語言,也是開源的,不會惹出88億美元的的官司吧。總體感覺通過了解,還是一門很優秀的語言,而且在Google內外據說也得到很好的使用,而且隨着Flutter以及新系統的推出,這門語言也有可能越來越好,不過後面情況誰也說不好,還要看Google怎麼支持與推廣。

Flutter是如何渲染界面的?

移動設備中有GPU和CPU,一般是GPU控制將數據渲染到顯示設備上的,GPU主要是通過發出VSync同步信號去幀數據來傳遞給顯示器。

FPS表示每秒傳遞的幀數,我們知道在理想情況下60FPS就感覺不到愛看,這意味着每個繪製時長應該在16ms以內,Android系統每隔16ms發出VSync信號,觸發對UI進行渲染,如果每次渲染都成功,這樣就能夠達到劉暢的畫面所需的60FPS。如果某個操作花費四件比較吃長 比如用了30ms,系統在得到VSync信號時就無法進行正常渲染,這樣就發生了丟幀現象,就會感覺卡頓。
所以玩遊戲的時候需要更好的CPU與GPU的支持。

Flutter只關心向GPU提供視圖數據,只關心VSync信號,然後通過Google自己的Skia渲染引擎想GPU提供數據。所以說Flutter是直接通過Skia自己進行渲染,而不是調用某些API,這也是Flutter一直宣稱原生體驗的原因。

Flutter前景如何,是否值得學習?

這個每個人的看法不同,個人認爲前景還可以,與React Native原理不同,Flutter是通過自己渲染,可能會體驗會更好。使用Dart語言,這門語言目前看來說對於有編程經驗的人來說可能還是相對容易些的,而支持庫目前來看也還可以,也要看Google後續的動作吧。

對於公司來說如果維護一套代碼來實現兩個端無疑時間好事,從節約成本、到方便維護、界面統一都是很好的,但是Flutter商用應該仍有一段距離吧。

如果有時間又有興趣的話,可以搞一下的,畢竟程序員就是在不斷學習的道路上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章