聲明:本人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)。不過當前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的概念,負責(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)境做了詳細說明,請參考官網(wǎng)進行搭建。