日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Flutter 2 源码阅读

發布時間:2025/3/19 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flutter 2 源码阅读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Flutter 2 源碼閱讀

進行源碼分析之前,先了解一下官方文檔中提供的核心架構圖,它也代表著整個 Flutter 架構

Flutter 的架構主要分成三層:Framework,EngineEmbedder

1)、FrameworkFramework

使用 dart 實現,包括 Material Design 風格的 Widget,Cupertino(針對 iOS)風格的 Widgets,文本/圖片/按鈕等基礎 Widgets,渲染,動畫,手勢等。此部分的核心代碼是:flutter 倉庫下的 flutter package,以及 sky_engine 倉庫下的 io,async ,ui (dart:ui 庫提供了 Flutter 框架和引擎之間的接口)等 package。其中 dart:ui 庫是對 Engine 中 Skia 庫的 C++ 接口的綁定。向上層提供了 window、text、canvas 等通用的繪制能力,通過 dart:ui 庫就能使用 Dart 代碼操作 Skia 繪制引擎。所以我們實際上可以通過實例化 dart:ui 包中的類(例如 Canvas、Paint 等)來繪制界面。然而,除了繪制,還要考慮到協調布局和響應觸摸等情況,這一切實現起來都異常麻煩,這也正是 Framework 幫我們做的事。渲染層 Rendering 是在 :🎯ui 庫之上的第一個抽象層,它為你做了所有繁重的數學工作。為了做到這一點,它使用 RenderObject 對象,該對象是真正繪制到屏幕上的渲染對象。由這些 RenderObject 組成的樹處理真正的布局和繪制。

2)、EngineEngine

使用 C++ 實現,主要包括:SkiaDartTextSkia 是開源的二維圖形庫,提供了適用于多種軟硬件平臺的通用 API。在安卓上,系統自帶了 Skia,在 iOS 上,則需要 APP 打包 Skia 庫,這會導致 Flutter 開發的 iOS 應用安裝包體積更大。 Dart 運行時則可以以 JIT、JIT Snapshot 或者 AOT 的模式運行 Dart 代碼。

3)、EmbedderEmbedder

是一個嵌入層,即把 Flutter 嵌入到各個平臺上去,這里做的主要工作包括渲染 Surface 設置,線程設置,以及插件等。從這里可以看出,Flutter 的平臺相關層很低,平臺(如 iOS)只是提供一個畫布,剩余的所有渲染相關的邏輯都在 Flutter 內部,這就使得它具有了很好的跨端一致性。

總結

以上是生活随笔為你收集整理的Flutter 2 源码阅读的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。