大學生個人網(wǎng)站怎么做seo技術(shù)學院
? ? ? ?
????????Flutter整體框架由三部分組成:Framework、Engine和Embedder。
???????Framework
????????Framework提供了一個用 Dart 語言編寫的現(xiàn)代、反應(yīng)式框架,由許多抽象的層級組成。它包括一套豐富的布局、動畫、繪制、手勢UI組件及配套代碼,以及更基礎(chǔ)的異步、文件、ui等基礎(chǔ)服務(wù)。
????????Framework最頂端是各種Widgets。包括我們經(jīng)常用到的 Material 和 Cupertino兩種風格的Widget以及下面的不帶明確風格的Widgets。比如:UI/文本/圖片/按鈕等基礎(chǔ) Widgets。 在 Widget 層下面,你會發(fā)現(xiàn) Rendering 層。
????????再往下是RenderObject。其會被上層的Flutter Widgets調(diào)用來實現(xiàn)其布局和后臺的繪制。Rendering tree 中的所有 RenderObjects 都會被Flutter分層和繪制。不過,大多數(shù)情況下,?你會發(fā)現(xiàn) Flutter中我們想要實現(xiàn)自定義的繪制邏輯,主要是使用CustomPaint或RenderObject的子類RenderBox ,而不是直接使用RenderObject。因為封裝一個全新的RenderObject是相當麻煩的,我們必須去實現(xiàn)layout、繪制和命中測試邏輯。
????????dart:ui 是框架的最底層,它負責處理與 Engine 層的交流溝通,以及一些對Flutter開發(fā)的基礎(chǔ)抽象。 此部分的核心代碼是: flutter 倉庫下的flutter package,以及 sky_engine 倉庫下的 io, async, ui等package。
???????Engine
????????Engine大部分是用C++實現(xiàn)的,其提供了Flutter核心API的底層實現(xiàn)。包括 Dart 運行時、編譯工具鏈,以及圖形(通過Skia)、文本布局、文件和網(wǎng)絡(luò)I/O、可訪問性支持、插件架構(gòu)等等,是連接框架和系統(tǒng)(Andoird/iOS)的橋梁。
????????Engine通過dart:ui暴露給Flutter框架,它將底層的C++代碼封裝在Dart類中。這個庫暴露了最底層的基元,例如用于驅(qū)動輸入、圖形和文本渲染子系統(tǒng)的類。
? ? ? ??Dart 部分主要包括:Dart Runtime,Garbage Collection(GC)以及Debug模式下的JIT支持。
? ? ? ??Skia是開源的二維圖形庫,提供了適用于多種軟硬件平臺的通用API。
? ? ? ? Text 即文本渲染,其使用Skia作為渲染后端,在Android和Fuchsia上使用FreeType渲染,在iOS上使用CoreGraphics來渲染字體。
???????Embedder
????????Embedder 負責與底層操作系統(tǒng)協(xié)調(diào),以訪問服務(wù),如渲染表面、可訪問性和輸入,并管理線程及消息事件循環(huán)。
? ? ? ??Embedder提供初始化 Flutter 引擎的入口,使Flutter 代碼可以作為一個模塊集成到現(xiàn)有的應(yīng)用程序中,或者作為應(yīng)用的主要模塊。
????????Embedder會獲取 UI 和柵格化線程,創(chuàng)建 Flutter 可以寫入的紋理。
????????Embedder層同時負責管理應(yīng)用的生命周期,包括輸入的操作(例如鼠標、鍵盤和觸控)、窗口大小的變化、線程管理和平臺消息的傳遞等等。