1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      flutter公式渲染的簡單介紹

      二、Flutter的渲染機制以及setState()背后的原理

      開始FrameWork層會通知Engine表示自己可以進行渲染了,在下一個Vsync信號到來之時,Engine層會通過Windows.onDrawFrame回調(diào)Framework進行整個頁面的構(gòu)建與繪制。每次收到渲染頁面的通知后,Engine調(diào)用Windows.onDrawFrame最終交給_handleDrawFrame()方法進行處理。最后會走到 WidgetsBinding.drawFrame() = buildOwner.buildScope(renderViewElement) = _dirtyElements[index].rebuild() = performRebuild() 這里會觸發(fā)當(dāng)前element的widget的build方法= updateChild() 注意這里已經(jīng)是子節(jié)點進行接下來的操作了= 子節(jié)點update() = 子節(jié)點rebuild() = 子節(jié)點performRebuild() ...

      公司主營業(yè)務(wù):網(wǎng)站設(shè)計制作、網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出正陽免費做網(wǎng)站回饋大家。

      小結(jié):所以說在widget樹中,越高層的 build() 里調(diào)用 setState() 會導(dǎo)致遍歷所有的子節(jié)點=遍歷所有子節(jié)點的子節(jié)點...

      話術(shù)總結(jié): setState() 會將當(dāng)前的 element 標(biāo)記為 臟 ,并交由 buildOwner ,由 buildOwner 加入自己的 臟列表中 ,等收到頁面渲染的通知后(這里流程簡略掉),會調(diào)用 buildOwenr. buildScope () ,這里會遍歷 臟列表 然后每一個都會調(diào)用 rebuild() , rebuild() 又會調(diào)用 performRebuild() , performRebuild() 則會調(diào)用 build() 方法重建當(dāng)前的 element ,然后調(diào)用 updateChild () 開始更新子節(jié)點,進而觸發(fā)子節(jié)點的 rebuild() 方法,進行下一輪的周期...一直到最后一個節(jié)點

      Flutter面試:渲染原理

      頁面中的各界面元素(Widget)以樹的形式組織,即控件樹。Flutter通過控件樹中的每個控件創(chuàng)建不同類型的渲染對象,組成渲染對象樹。而渲染對象樹在Flutter的展示過程分為三個階段:布局、繪制、合成和渲染。

      (一)布局

      Flutter采用深度優(yōu)先機制遍歷渲染對象樹,決定渲染對象樹中各渲染對象在屏幕上的位置和尺寸。在布局過程中,渲染對象樹中的每個渲染對象都會接收父對象的布局約束參數(shù),決定自己的大小,然后父對象按照控件邏輯決定各個子對象的位置,完成布局過程。

      為了防止因子節(jié)點發(fā)生變化而導(dǎo)致整個控件樹重新布局,F(xiàn)lutter加入了一個機制——布局邊界(Relayout Boundary),可以在某些節(jié)點自動或手動地設(shè)置布局邊界,當(dāng)邊界內(nèi)的任何對象發(fā)生重新布局時,不會影響邊界外的對象,反之亦然。

      二)繪制

      布局完成后,渲染對象樹中的每個節(jié)點都有了明確的尺寸和位置。Flutter會把所有的渲染對象繪制到不同的圖層上。與布局過程一樣,繪制過程也是深度優(yōu)先遍歷,而且總是先繪制自身,再繪制子節(jié)點。

      以下圖為例:節(jié)點1在繪制完自身后,會再繪制節(jié)點2,然后繪制它的子節(jié)點3、4和5,最后繪制節(jié)點6。

      可以看到,由于一些其他原因(比如,視圖手動合并)導(dǎo)致2的子節(jié)點5與它的兄弟節(jié)點6處于了同一層,這樣會導(dǎo)致當(dāng)節(jié)點2需要重繪的時候,與其無關(guān)的節(jié)點6也會被重繪,帶來性能損耗。

      為了解決這一問題,F(xiàn)lutter提出了與布局邊界對應(yīng)的機制——重繪邊界(Repaint Boundary)。在重繪邊界內(nèi),F(xiàn)lutter會強制切換新的圖層,這樣就可以避免邊界內(nèi)外的互相影響,避免無關(guān)內(nèi)容置于同一圖層引起不必要的重繪。

      重繪邊界的一個典型場景是Scrollview。ScrollView滾動的時候需要刷新視圖內(nèi)容,從而觸發(fā)內(nèi)容重繪。而當(dāng)滾動內(nèi)容重繪時,一般情況下其他內(nèi)容是不需要重繪的,這時候重繪邊界就派上用場了。

      (三)合成和渲染

      終端設(shè)備的頁面越來越復(fù)雜,因此Flutter的渲染樹層級通常很多,直接交付給渲染引擎進行多圖層渲染,可能會出現(xiàn)大量渲染內(nèi)容的重復(fù)繪制,所以還需要先進行一次圖層合成,即將所有的圖層根據(jù)大小、層級、透明度等規(guī)則計算出最終的顯示效果,將相同的圖層歸類合并,簡化渲染樹,提高渲染效率。

      合并完成后,F(xiàn)lutter會將幾何圖層數(shù)據(jù)交由Skia引擎加工成二維圖像數(shù)據(jù),最終交由GPU進行渲染,完成界面的展示。

      四、總結(jié)

      咱們從各種業(yè)界主流跨端方案與Flutter的對比開始,到Flutter的簡要介紹以及Flutter的運行機制,并以界面渲染過程為例,從布局、繪制、合成和渲染三個階段講述了Flutter的實現(xiàn)原理。相信大家對Flutter已經(jīng)有一個整體認(rèn)知,趕快一起上手操作起來吧!

      Flutter Math發(fā)布,使用純Flutter渲染LaTeX數(shù)學(xué)公式

      介紹一下我最近開發(fā)的一個Flutter插件。Flutter Math是一個完全使用Dart和Flutter渲染LaTeX數(shù)學(xué)公式的插件,可以看作是移植在Dart和Flutter平臺上的KaTeX。其支持的LaTeX語法大致與KaTeX相同(少數(shù)當(dāng)前版本暫不支持的語法詳見Github倉庫),對數(shù)學(xué)公式的渲染結(jié)果幾乎像素級還原KaTeX。

      相比已有的flutter_tex插件,本插件完全的基于Dart和Flutter,不包含任何WebView和Javascript,性能遠(yuǎn)超過flutter_tex。大家如果頻繁遇到flutter_tex帶來的卡頓以及崩潰,歡迎試用Flutter Math。

      x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}

      i\hbar\frac{\partial}{\partial t}\Psi(\vec x,t) = -\frac{\hbar}{2m}\nabla^2\Psi(\vec x,t)+ V(\vec x)\Psi(\vec x,t)

      \hat f(\xi) = \int_{-\infty}^\infty f(x)e^{- 2\pi i \xi x}\mathrmkt5fbx5x

      項目倉庫地址: GitHub地址 。目前版本為0.1.1,更多信息以及暫不支持的KaTeX特性歡迎查閱GitHub頁面。歡迎打星,歡迎fork!


      分享名稱:flutter公式渲染的簡單介紹
      網(wǎng)頁URL:http://www.ef60e0e.cn/article/phpohc.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        忻城县| 赞皇县| 黔西县| 丰城市| 五常市| 叶城县| 吐鲁番市| 新泰市| 昂仁县| 海兴县| 灵台县| 沐川县| 深州市| 九江市| 大连市| 甘德县| 团风县| 项城市| 安化县| 隆尧县| 荆门市| 博罗县| 伊川县| 河源市| 普兰店市| 阿巴嘎旗| 布拖县| 孝感市| 江都市| 瓮安县| 西昌市| 林口县| 溧水县| 博客| 兴义市| 宝坻区| 申扎县| 陕西省| 河源市| 三江| 溧阳市|