Flutter中的三棵樹

????????Widget?Tree:?頁面配置信息。

????????Element?Tree: Widget?tree的實例化對象,創建出renderObject,并關聯到element.renderobject屬性上,最后完成RenderObject?Tree的創建。

? ? ? ? RenderObject Tree:完成布局和圖層繪制,輸出LayerTree,?然后交給skia渲染。

? ? ? ? Flutter渲染劃分為三棵樹的其核心價值是,?頁面的更新,可以根據Element變化的內容,只修改對應的RenderObject?Tree,即進行增量更新

? ? ? ?在三棵樹的構建過程中,創建RenderObject是最為耗時的操作。Flutter判斷是否需要重新創建RenderObject節點,主要是根據Element?Tree?runtimeType和key兩個字段進行判斷。兩者任何一個有變化,RenderObject節點就需要重建,否則只需更新RenderObject節點的屬性即可。

????????如下圖所示:

????????

? ? ? ? 當Widget發生變化時,對比Element?tree上對應位置上新舊Widget是否一致,只有不一致時才會重建Element并重建并重新進行RenderObject實例化。即RenderObject Tree只需進行增量的重建即可,這就大大提升了渲染效率。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714258.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714258.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714258.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C++ 函數重載】

C 函數重載 ■ C 函數重載簡介■ C 運算符重載■ 一元運算符重載■ 二元運算符重載 &#xff08;&#xff0c;-&#xff0c;*&#xff0c;/&#xff09;■ 關系運算符重載 &#xff08; < 、 > 、 < 、 > 、 等等&#xff09;■ 輸入/輸出運算符重載&#xff08;運…

【嵌入式學習】網絡編程day03.02

一、項目 1、TCP機械臂測試 #include <myhead.h> #define SER_IP "192.168.126.32" #define SER_PORT 8888 #define CER_IP "192.168.126.42" #define CER_PORT 9891 int main(int argc, const char *argv[]) {int wfd-1;//創建套接字if((wfdsocke…

ubuntu創建賬號和samba共享目錄

新建用于登錄Ubuntu圖形界面的用戶 sudo su #切換為root用戶獲取管理員權限用于新建用戶 adduser username #新建用戶&#xff08;例如用戶名為username&#xff09; adduser username sudo #將用戶添加到 sudo 組 新建只能用于命令行下登錄的用戶 sudo su #切換為root用戶…

《TCP/IP詳解 卷一》第8章 ICMPv4 和 ICMPv6

目錄 8.1 引言 8.1.1 在IPv4和IPv6中的封裝 8.2 ICMP 報文 8.2.1 ICMPv4 報文 8.2.2 ICMPv6 報文 8.2.3 處理ICMP報文 8.3 ICMP差錯報文 8.3.1 擴展的ICMP和多部報文 8.3.2 目的不可達和數據包太大 8.3.3 重定向 8.3.4 ICMP 超時 8.3.5 參數問題 8.4 ICMP查詢/信息…

劃分開始結束位置設置標記

劃分開始結束位置 初始音軌如下圖所示 在想開始地方單擊左鍵&#xff0c;長按直到你想要的結束位置松開。就可以劃分開始和結束位置 設置標記 方式1 &#xff1a;直接點擊該圖標 方式二&#xff1a;使用快捷鍵M 設置標記點可以自定義名稱方便檢索標記點

javaWebssh酒店客房管理系統myeclipse開發mysql數據庫MVC模式java編程計算機網頁設計

一、源碼特點 java ssh酒店客房管理系統是一套完善的web設計系統&#xff08;系統采用ssh框架進行設計開發&#xff09;&#xff0c;對理解JSP java編程開發語言有幫助&#xff0c;系統具有完整的源代碼和數據庫&#xff0c;系統主要采用B/S模式開發。開發環境為TOMCAT7.0…

STL容器之string類

文章目錄 STL容器之string類1、 什么是STL2、STL的六大組件3、string類3.1、string類介紹3.2、string類的常用接口說明3.2.1、string類對象的常見構造3.2.2、string類對象的容量操作3.2.3、string類對象的訪問及遍歷操作3.2.4、 string類對象的修改操作3.2.5、 string類非成員函…

車輛維護和燃油里程跟蹤器LubeLogger

什么是 LubeLogger &#xff1f; LubeLogger 是一個自托管、開源、基于網絡的車輛維護和燃油里程跟蹤器。 LubeLogger 比較適合用來跟蹤管理您的汽車的維修、保養、加油的歷史記錄&#xff0c;比用 Excel 強多了 官方提供了在線試用&#xff0c;可以使用用戶名 test 和密碼 123…

oracle-long類型轉clob類型及clob類型字段的導出導入

1、若oracle數據庫表字段類型有long類型&#xff0c;有時候我們需要模糊匹配long類型字段時&#xff0c;是查詢不出來結果的&#xff0c;此時使用TO_LOB&#xff0c;將long類型轉成clob類型&#xff0c;就可以模糊匹配信息。 例如&#xff1a;oracle數據庫查詢所有視圖內容中包…

機器學習-4

文章目錄 前言數組創建切片索引索引遍歷切片編程練習 總結 前言 本篇將介紹數據處理 Numpy 庫的一些基本使用技巧&#xff0c;主要內容包括 Numpy 數組的創建、切片與索引、基本運算、堆疊等等。 數組創建 在 Python 中創建數組有許多的方法&#xff0c;這里我們使用 Numpy 中…

機器學習-5

文章目錄 前言Numpy庫四則運算編程練習 前言 本片將介紹Numpy庫中的四則運算。 Numpy庫四則運算 Numpy庫可以直接進行一些四則運算&#xff0c;快速的處理兩個Numpy數組&#xff1a; a np.array([[1,2,3],[4,5,6]]) b np.array([[4,5,6],[1,2,3]])向量與向量之間 1.加法 …

14.最長公共前綴

題目&#xff1a;編寫一個函數來查找字符串數組中的最長公共前綴。 如果不存在公共前綴&#xff0c;返回空字符串""。 解題思路&#xff1a;橫向掃描&#xff0c;依次遍歷每個字符串&#xff0c;更新最長公共前綴。另一種方法是縱向掃描。縱向掃描時&#xff0c;從前…

基于tomcat的JavaWeb實現

Tomcat服務器 免費&#xff0c;性能一般的服務器 安裝配置 基于Java&#xff0c;故需要配置環境變量&#xff0c;新加系統路徑JAVA_HOME&#xff0c;路徑為jdk的主目錄。 而后打開bin目錄下的startup.bat文件出現如下窗口說明配置成功 idea繼承tomcat服務器 使用java開發…

Linux 之壓縮與解壓相關命令的基礎用法

目錄 1、zip 與 unzip 2、gzip 命令 3、tar 命令 1、zip 與 unzip 在桌面新建一個文件和文件夾用于測試 在 test 目錄下有一個 1.txt 文件 我們使用 zip 命令對其壓縮 用法&#xff1a; zip 自定義壓縮包名 被壓縮文件路徑位置 zip myon.zip 1.txt 因為我們這里就是在 …

linux_day04

大綱&#xff1a;命令&#xff0c;vim&#xff0c;gcc&#xff0c;編譯工具&#xff0c;生成代碼&#xff0c;調試&#xff0c;庫makefile&#xff0c;系統編程 文件系統&#xff1a;文件屬性&#xff0c;文件內容&#xff0c;萬物皆文件&#xff08;不在內存中的是文件&#…

ProtoBuf 是什么?

1. 序列化概念 序列化和反序列化 序列化&#xff1a;把對象轉換為字節序列的過程稱為對象的序列化。 反序列化&#xff1a;把字節序列恢復為對象的過程稱為對象的反序列化。 什么情況下需要序列化 存儲數據&#xff1a;當你想把的內存中的對象狀態保存到?個?件中或者存到數…

怎么壓縮成mp4視頻?

在數字化時代&#xff0c;視頻已經成為我們日常生活中不可或缺的一部分。然而&#xff0c;有時候我們可能會遇到視頻文件太大的問題&#xff0c;不便于傳輸、存儲或分享。那么&#xff0c;如何將視頻壓縮成MP4格式&#xff0c;以減小文件大小呢&#xff1f;本文將為您介紹幾種簡…

docker學習第一步:基于Linux安裝docker!

要求Linux下的CentOS 7.0 以上的版本 01、安裝docker版本倉庫 1、設置倉庫 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 2、穩定倉庫 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 現在我也找了很…

醫學大數據|文獻閱讀|有關“胃癌+機器學習”的研究記錄

目錄 1.基于32基因特征構建的機器學習模型可有效預測胃癌患者的預后和治療反應 2.胃癌患者術后90天死亡率的機器學習風險預測模型 3.使用機器學習模型預測幽門螺桿菌根除患者胃癌患病風險 4.利用初始內窺鏡檢查和組織學結果進行個性化胃癌發病率預測 1.基于32基因特征構建的…

隨想錄算法訓練營第四十八天|121. 買賣股票的最佳時機、122.買賣股票的最佳時機II

121. 買賣股票的最佳時機 public class Solution {public int MaxProfit(int[] prices) {int result0;int lowint.MaxValue;for(int i0;i<prices.Length;i){if(prices[i]<low){lowprices[i];}else{resultMath.Max(result,prices[i]-low);}}return result;} } 先遍歷找到…