第二點(diǎn)表明,微任務(wù)會(huì)在進(jìn)行幀渲染的過程中進(jìn)行。也就是你的微任務(wù)過多,會(huì)使頁面卡頓、掉幀
成都創(chuàng)新互聯(lián)公司客戶idc服務(wù)中心,提供雅安移動(dòng)機(jī)房、成都服務(wù)器、成都主機(jī)托管、成都雙線服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過各地的服務(wù)中心,我們向成都用戶提供優(yōu)質(zhì)廉價(jià)的產(chǎn)品以及開放、透明、穩(wěn)定、高性價(jià)比的服務(wù),資深網(wǎng)絡(luò)工程師在機(jī)房提供7*24小時(shí)標(biāo)準(zhǔn)級技術(shù)保障。
1.webview_flutter
2.flutter_inappwebview
3.flutter_webview_plugin
筆者最近發(fā)現(xiàn)webview_flutter在Android端嵌套帶有較長的Webview頁面時(shí)偶?xì)W會(huì)存在卡頓問題表現(xiàn)為加速向下滑動(dòng)到頁面底部,然后從底部慢慢像上滑就不起作用了,體驗(yàn)很不好,經(jīng)過一天的排查和實(shí)驗(yàn)發(fā)現(xiàn)是webview_flutter插件自己的問題,用原生嵌套WebView并沒有問題,后來改成flutter_webview_plugin問題可以解決,但是flutter_webview_plugin插件并不是基于flutter渲染的并不能在嵌套webview的頁面自定義flutter樣式層,后來發(fā)現(xiàn)使用flutter_inappwebview插件能夠完美解決問題。推薦你們用flutter_inappwebview。
1.圓角對性能的影響
盡量避免用Clipxxx組件,建議用BoxDecoration的image屬性實(shí)現(xiàn),如果用Clipxxx組件,圓角取整后性能會(huì)提升。
2.減少重繪
根據(jù)場景合理使用RePaintBoundary,使繪制獨(dú)立于父布局,避免重繪,提升性能,但過度使用增加的圖層會(huì)帶來Raster合成的耗時(shí)。例如scrollview是滑動(dòng)過程會(huì)導(dǎo)致所有的節(jié)點(diǎn)都重繪,可以在scrollview下一層使用RePaintBoundary。
3.滾動(dòng)步長插值器優(yōu)化(了解)
官方的滾動(dòng)差值器在出現(xiàn)小卡頓時(shí),滾動(dòng)步長會(huì)出現(xiàn)大的跳躍,導(dǎo)致體感上出現(xiàn)很明顯的抖動(dòng),優(yōu)化步長偏移量算法與原生效果對齊。
4.開啟SurfaceView
官方推薦Flutter用SurfaceView ,因?yàn)镾urfaceView與應(yīng)用窗口內(nèi)容分隔開,在專有硬件中合成,產(chǎn)生的中間副本少于TextureView,所以性能高,占用內(nèi)存少,但是在混合棧遇到的問題需要突破
5.使用RepaintBoundary 提升頻繁重繪控件的性能。使用RelayoutBoundary提升頻繁修改大小,增刪的布局中也可以提升性能。
6.build中不要去寫大量的耗時(shí)邏輯,因?yàn)閿?shù)據(jù)更新會(huì)觸發(fā)build的多次調(diào)用,在里面做耗時(shí)邏輯會(huì)降低性能。
7.盡量使用statelessWidget代替statefulWidget,因?yàn)閟tatefulWidget的銷毀重建會(huì)引起子widget的銷毀與重建。
8.解析json可以放到子線程線程中,開Isolate去解析,這樣,當(dāng)返回?cái)?shù)據(jù)特別大的時(shí)候也不會(huì)阻塞界面。
9.使用不變的組件的時(shí)候可以添加const,const組件不會(huì)進(jìn)行build更新
10.由于flutter通過widget.runtimeType和key來判斷是否需要跟新組建,所以我們寫組件的時(shí)候盡量保持key不變,或者不寫key。對于一些需要頻繁改變,例如新增、刪除、排序的最好加上key。如果type一直,如果不寫key容易導(dǎo)致,element無法區(qū)分新舊widget,導(dǎo)致無法更新。
Flutter(抖動(dòng))、Wow(晃動(dòng))、Drift(漂移)、Scrape Flutter(刮顫)是以移動(dòng)介質(zhì)為記錄材料做模擬錄制和回放的系統(tǒng)所需要面對的幾種失真。這些失真是在錄制、復(fù)制、回放過程中,由于記錄介質(zhì)的不規(guī)則的運(yùn)動(dòng)而導(dǎo)致的令人不快的頻率調(diào)制所引入信號中的。抖晃率用于定量描述這種由于介質(zhì)的運(yùn)動(dòng)速度不穩(wěn)定所造成的頻率晃動(dòng)對人耳的主觀影響。比如回放一個(gè)精準(zhǔn)3150Hz的正弦信號,在理想的無抖晃的情況下,播放出來的信號就是3150Hz,然而在實(shí)際有抖晃的情況下,播放出來的信號的瞬時(shí)頻率將圍繞某個(gè)均值(不一定正好等于3150Hz)不斷變動(dòng),就是說相對于那個(gè)均值有往復(fù)變化的頻偏。
Drift(漂移)指的是信號中的頻偏低于大約0.5Hz的頻率調(diào)制。它給人的感覺是平均音調(diào)的緩慢變化。
Wow(晃動(dòng))指的是信號中的頻偏范圍為大約0.5Hz~6Hz的頻率調(diào)制。它給人的感覺是音調(diào)的波動(dòng)。
Flutter(抖動(dòng))指的是信號中的頻偏范圍為大約6Hz~100Hz的頻率調(diào)制。它給人的感覺是聲音品質(zhì)的粗糙化。
Scrape Flutter(刮顫)指的是信號中的頻偏高于大約100Hz的頻率調(diào)制。它由磁帶的粘連-滑動(dòng)(粘滯)運(yùn)動(dòng)造成。它給人的感覺是聲音中有噪音,而這種噪音在沒有信號時(shí)是不存在的。這種噪音也稱為摩擦噪音或粘滯噪音。
目前有多種抖晃率測試標(biāo)準(zhǔn),例如:CCIR,DIN, NAB, JIS等,這里介紹的是基于AES(Audio Engineering Society)的AES6-2008(r2012)標(biāo)準(zhǔn)(就是2012年的最新修訂版),它與IEC 60386、IEEE Std-193、CCIR 409-2和DIN 45507標(biāo)準(zhǔn)兼容。標(biāo)準(zhǔn)測試信號的頻率定為3150Hz。當(dāng)然用3000Hz的測試頻率或其他的頻率,這里介紹的方法也適用。
《摘自Multi-Instrument軟件說明書》
這種方法最常見,但是有些地方引用的話,刷新的成本比較大,刷新的是整個(gè)頁面,數(shù)據(jù)太多加載太慢的話,會(huì)有閃爍的現(xiàn)象
這種方法類似于iOS中的set方法,通過設(shè)置某個(gè)屬性的時(shí)候,去刷新某個(gè)控件。在flutter中這種刷新方式,是對上面setState(){}方法的改進(jìn),根本的方法還是setState(){},只不過是通過方法去刷新某個(gè)控件。如下:
首先在pubspec.yaml中添加provider依賴
下面通過provider來實(shí)現(xiàn)一個(gè)發(fā)送驗(yàn)證碼的案例。
創(chuàng)建一個(gè)TimerModel文件
頁面布局如下:
當(dāng)前題目:flutter頁面抖動(dòng),flutter頁面上下滑動(dòng)
轉(zhuǎn)載源于:http://jinyejixie.com/article4/dssegie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站設(shè)計(jì)、電子商務(wù)、營銷型網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)