日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Flutter 2 源码阅读

發(fā)布時(shí)間:2025/3/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flutter 2 源码阅读 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Flutter 2 源碼閱讀

進(jìn)行源碼分析之前,先了解一下官方文檔中提供的核心架構(gòu)圖,它也代表著整個(gè) Flutter 架構(gòu)

Flutter 的架構(gòu)主要分成三層:Framework,EngineEmbedder

1)、FrameworkFramework

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

2)、EngineEngine

使用 C++ 實(shí)現(xiàn),主要包括:SkiaDartTextSkia 是開源的二維圖形庫,提供了適用于多種軟硬件平臺(tái)的通用 API。在安卓上,系統(tǒng)自帶了 Skia,在 iOS 上,則需要 APP 打包 Skia 庫,這會(huì)導(dǎo)致 Flutter 開發(fā)的 iOS 應(yīng)用安裝包體積更大。 Dart 運(yùn)行時(shí)則可以以 JIT、JIT Snapshot 或者 AOT 的模式運(yùn)行 Dart 代碼。

3)、EmbedderEmbedder

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。