聲明:本人Flutter學(xué)習(xí)都是基于Flutter官網(wǎng)和Flutter中文網(wǎng),所以會引入其中的一些資源和代碼弄屡。
《Flutter實戰(zhàn)》
Flutter
Flutter是Google退出并開源的便攜式UI開發(fā)SDK,致力于用統(tǒng)一的代碼庫為移應(yīng)用(Android & iOS),Web和桌面應(yīng)用程序。
Flutter使用Skia作為其2D渲染引擎轻庆,跨平臺的渲染引擎癣猾,使得Flutter可以在不同的平臺中渲染出相同的表現(xiàn)敛劝。不過當(dāng)前iOS系統(tǒng)使用的是Metal渲染引擎,所以我們在iOS應(yīng)用打包中還要將Skia一并打包進去纷宇。
Flutter開發(fā)使用的Dart語言夸盟。Dart的優(yōu)勢在于其同時支持JIT(Just in time)和AOT(Ahead of time)兩種運行方式,它允許開發(fā)者使用JIT模式(動態(tài)解釋)進行開發(fā)像捶,即時翻譯查看代碼變動后的效果上陕,使用AOT模式(提前編譯)發(fā)布應(yīng)用包桩砰。這樣做既提高了開發(fā)效率,又不影響應(yīng)用的性能释簿。
Flutter架構(gòu)
下面是《Flutter實戰(zhàn)》中的架構(gòu)圖:
從下往上:
- Foundation層和(Animation, Painting, Gestures)層對應(yīng)的是Flutter中的dart:ui包亚隅,提供了UI的基礎(chǔ)能力,包括動畫庶溶、手勢及繪制能力煮纵。
- Rendering層,類似于虛擬DOM的概念偏螺,負(fù)責(zé)構(gòu)建UI樹行疏,進行布局計算和繪制和響應(yīng)更新。
- Widgets層是基礎(chǔ)的UI組件
- Meterial和Cupertino是兩種不同UI樣式的組件庫套像。
Flutter Engine
Flutter Engine是C++實現(xiàn)的 SDK酿联,其中包括了 Skia引擎、Dart運行時夺巩、文字排版引擎等贞让。在代碼調(diào)用 dart:ui庫時,調(diào)用最終會走到Engine層柳譬,然后實現(xiàn)真正的繪制邏輯震桶。
了解這些基本知識后,下一步就是搭建開發(fā)環(huán)境了征绎。Flutter官網(wǎng)安裝文檔對不同系統(tǒng)搭建Flutter開發(fā)環(huán)境做了詳細(xì)說明蹲姐,請參考官網(wǎng)進行搭建。