前言:進入新框架的開發前,有必要整體了解框架設計及特點,對該框架初步認識,此文對Flutter框架進行淺顯梳理,以備查閱;
Flutter框架

從該架構圖可知,Flutter框架可分為Framework層和Engine層;
Flutter Framework: 整個框架層都是用Dart語言實現,該層提供一套基礎庫, 用於處理動畫、繪圖和手勢等。並且基於繪圖封裝了一套 UI組件庫,並且細分為兩種風格的組件
Materail : Android風格的Widget,包含以下幾個大類
- App基礎結構和導航類型(Scaffold,Appbar,BottomNavigationBar等)
- Buttons(懸浮按鈕,菜單按鈕等)
- 輸入和選擇器(Checkbox,Radio,Switch等)
- 對話框,面板
- 布局

Cupertino: IOS風格的Widget,主要包含:
CupertinoTabBar,CupertinoPageScaffold,CupertinoTabScaffold,CupertinoTabView

Flutter Engine: 這是一個純 C++實現的框架層,包含了 Skia引擎(高性能渲染引擎)、Dart運行環境、文字排版引擎等。它可以以 JIT、JIT Snapshot 或者 AOT(預先編譯)的模式運行 Dart代碼。AOT直接將Dart源碼編譯成了本地字節碼,沒有了解釋執行的過程,提升執行性能。和Java顯著不同的是Dart的"線程"(Isolate)是不共享內存的,各自的堆(Heap)和棧(Stack)都是隔離的,彼此之間通過消息通道來通信。所以,Dart不存在數據競爭和變量狀態同步的問題,整個Flutter Framework Widget的渲染過程都運行在一個isolate中,在代碼調用 dart:ui庫時,提供 dart:ui庫中 Native Binding 實現。 這個運行時還控制着 VSync信號的傳遞、GPU數據的填充等,並且還負責把客戶端的事件傳遞到運行時中的代碼。

轉載請注明出處From crash_coder linguowu linguowu0622@gamil.com