下圖看起來和使用Container做的線顯示效果一樣
創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的北戴河網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
Flutter 官方對解釋的不是很清楚
通過測試對比發(fā)現(xiàn)Flutter在渲染小于1邏輯像素的線的時候,其高度是按1邏輯像素去展示的,只不過看到的顏色會不一樣,當(dāng)設(shè)置線的高度不是整數(shù)邏輯像素時,線的高度是線上取整后的邏輯像素,只不過看到的線上下邊緣的顏色會隨著小數(shù)部分的值越大顏色越接近設(shè)置的顏色。也就是說flutter是以1邏輯像素的整數(shù)倍去顯示的,如果是非整數(shù)倍邏輯像素線上下邊緣的顏色會跟設(shè)置的不一樣(以灰度的方式顯示出來)。
ios 原生目前也可以展示小于1物理像素的點,但是以UIView的控件做的線,其高度有個臨界值,低于臨界值的線會顯示不出來,而且其顯示的線邊緣比較銳利,其高度在到某一臨界值后會直接變高,而不是在線上下邊緣做灰度展示。而用原生繪制出來的線展示小于以邏輯像素的時候其高度均展示為1邏輯像素,不過顏色值會以灰度的方式展示出來,在達到邏輯像素的整數(shù)倍時展示設(shè)置的顏色,這是和flutter一樣的。
比如拿iPhone 6s 舉例,其屏幕寬度是2.3英寸,橫向上有750顆像素點,ppi = 750/2.3 = 326,既每寸上有326個物理像素,換算成厘米也就是 326/2.54 = 128.35,也就是說每厘米上有128.35個物理像素點,每毫米有13個物理像素點,也就是每個物理像素點的寬度是0.077毫米。6s 的邏輯寬度是375,橫向上每厘米有375/(2.3*2.54) = 64邏輯像素/cm,也就是6s上每個邏輯像素的寬度是0.156毫米。當(dāng)我們設(shè)置一邏輯像素寬度時其在6s上對應(yīng)的寬度是0.156毫米。
算數(shù)運算符:加(+) 減(-) 乘(*) 除(/) 取余(%) 取整(~/)
關(guān)系運算符:(==)(!=)()()(=)(=)
邏輯運算符:(!)()(||)
賦值運算符:(=)(??=)(+=)(-=)(*=)(/=)(%=)(~/=)
1.圓角對性能的影響
盡量避免用Clipxxx組件,建議用BoxDecoration的image屬性實現(xiàn),如果用Clipxxx組件,圓角取整后性能會提升。
2.減少重繪
根據(jù)場景合理使用RePaintBoundary,使繪制獨立于父布局,避免重繪,提升性能,但過度使用增加的圖層會帶來Raster合成的耗時。例如scrollview是滑動過程會導(dǎo)致所有的節(jié)點都重繪,可以在scrollview下一層使用RePaintBoundary。
3.滾動步長插值器優(yōu)化(了解)
官方的滾動差值器在出現(xiàn)小卡頓時,滾動步長會出現(xiàn)大的跳躍,導(dǎo)致體感上出現(xiàn)很明顯的抖動,優(yōu)化步長偏移量算法與原生效果對齊。
4.開啟SurfaceView
官方推薦Flutter用SurfaceView ,因為SurfaceView與應(yīng)用窗口內(nèi)容分隔開,在專有硬件中合成,產(chǎn)生的中間副本少于TextureView,所以性能高,占用內(nèi)存少,但是在混合棧遇到的問題需要突破
5.使用RepaintBoundary 提升頻繁重繪控件的性能。使用RelayoutBoundary提升頻繁修改大小,增刪的布局中也可以提升性能。
6.build中不要去寫大量的耗時邏輯,因為數(shù)據(jù)更新會觸發(fā)build的多次調(diào)用,在里面做耗時邏輯會降低性能。
7.盡量使用statelessWidget代替statefulWidget,因為statefulWidget的銷毀重建會引起子widget的銷毀與重建。
8.解析json可以放到子線程線程中,開Isolate去解析,這樣,當(dāng)返回數(shù)據(jù)特別大的時候也不會阻塞界面。
9.使用不變的組件的時候可以添加const,const組件不會進行build更新
10.由于flutter通過widget.runtimeType和key來判斷是否需要跟新組建,所以我們寫組件的時候盡量保持key不變,或者不寫key。對于一些需要頻繁改變,例如新增、刪除、排序的最好加上key。如果type一直,如果不寫key容易導(dǎo)致,element無法區(qū)分新舊widget,導(dǎo)致無法更新。
1、數(shù)值型-Number
2、布爾型-Boolean
3、字符串-String
4、列表-List
5、鍵值對-Map
1、int: 整數(shù),數(shù)值
2、double: 浮點型數(shù)值,帶有小數(shù)點
運算符:+,-,*,/,~/(取整),%;
字符串操作
運算符:+,*,==,[]
插值表達式:${expression}
常用屬性:length,isEmpty(是否為空)
Map 對象
Flutter 的Dart語言,數(shù)字向上或者向下取整數(shù)。
例如:
6除以5想要獲取到不同的值
控制小數(shù)點精度
標題名稱:flutter取整,float取整和取小數(shù)
標題路徑:http://vcdvsql.cn/article44/dsigehe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、虛擬主機、定制開發(fā)、ChatGPT、網(wǎng)站維護、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)