重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
onInteractionEnd 交互結束
創新互聯公司是一家專注于網站設計、成都網站設計與策劃設計,臨武網站建設哪家好?創新互聯公司做網站,專注于網站建設十年,網設計領域的專業建站公司;建站業務涵蓋:臨武等地區。臨武做網站價格咨詢:18982081108
onInteractionStart 交互開始
onInteractionUpdate 滑動時候一直會回調
focalPoint 是相對于屏幕左上角的偏移量。
localFocalPoint是相對于父容器區域左上角的偏移量。
scale縮放量。
horizontalScale水平縮放量。
verticalScale豎直縮放量。
rotation旋轉量。------ 這里說明能監聽到旋轉量
還可以通過transformationController進行變換控制,有興趣的可以自己研究。
參考文章
1.webview_flutter
2.flutter_inappwebview
3.flutter_webview_plugin
筆者最近發現webview_flutter在Android端嵌套帶有較長的Webview頁面時偶歐會存在卡頓問題表現為加速向下滑動到頁面底部,然后從底部慢慢像上滑就不起作用了,體驗很不好,經過一天的排查和實驗發現是webview_flutter插件自己的問題,用原生嵌套WebView并沒有問題,后來改成flutter_webview_plugin問題可以解決,但是flutter_webview_plugin插件并不是基于flutter渲染的并不能在嵌套webview的頁面自定義flutter樣式層,后來發現使用flutter_inappwebview插件能夠完美解決問題。推薦你們用flutter_inappwebview。
1.圓角對性能的影響
盡量避免用Clipxxx組件,建議用BoxDecoration的image屬性實現,如果用Clipxxx組件,圓角取整后性能會提升。
2.減少重繪
根據場景合理使用RePaintBoundary,使繪制獨立于父布局,避免重繪,提升性能,但過度使用增加的圖層會帶來Raster合成的耗時。例如scrollview是滑動過程會導致所有的節點都重繪,可以在scrollview下一層使用RePaintBoundary。
3.滾動步長插值器優化(了解)
官方的滾動差值器在出現小卡頓時,滾動步長會出現大的跳躍,導致體感上出現很明顯的抖動,優化步長偏移量算法與原生效果對齊。
4.開啟SurfaceView
官方推薦Flutter用SurfaceView ,因為SurfaceView與應用窗口內容分隔開,在專有硬件中合成,產生的中間副本少于TextureView,所以性能高,占用內存少,但是在混合棧遇到的問題需要突破
5.使用RepaintBoundary 提升頻繁重繪控件的性能。使用RelayoutBoundary提升頻繁修改大小,增刪的布局中也可以提升性能。
6.build中不要去寫大量的耗時邏輯,因為數據更新會觸發build的多次調用,在里面做耗時邏輯會降低性能。
7.盡量使用statelessWidget代替statefulWidget,因為statefulWidget的銷毀重建會引起子widget的銷毀與重建。
8.解析json可以放到子線程線程中,開Isolate去解析,這樣,當返回數據特別大的時候也不會阻塞界面。
9.使用不變的組件的時候可以添加const,const組件不會進行build更新
10.由于flutter通過widget.runtimeType和key來判斷是否需要跟新組建,所以我們寫組件的時候盡量保持key不變,或者不寫key。對于一些需要頻繁改變,例如新增、刪除、排序的最好加上key。如果type一直,如果不寫key容易導致,element無法區分新舊widget,導致無法更新。
小菜在業務開發過程中會自定義 Slider 滑動條,而在自定義之前,小菜先簡單了解一下 Flutter 自帶的 Slider ;
簡單分析源碼可得, Slider 是一個有狀態的 StatefulWidget 組件,屬性也很清晰易懂,其中滑動過程中對應的 value 值和 onChanged 回調是必須參數;
value 未滑動過程中對應的值,在 min 和 max 之間; onChanged 是在滑動過程中回調,當 onChanged 為 null 或 value 所在的 min 和 max 集合范圍為空時, Slider 禁止滑動;
min 和 max 為滑動條范圍,而 value 的取值范圍是在 min 和 max 之間,無論 value 為正還是負,均需要在 min 和 max 之間;
activeColor 為滑動條已滑動過的顏色; inactiveColor 為滑動條中未滑動的顏色;兩者均可以在 SliderTheme 中設置;
label 為滑動條滑動到某一節點的標簽文案; divisions 是把 min 和 max 等分為 divisions 份數;只有在 divisions 生效時, label 才會展示;
onChangeStart 和 onChangeEnd 分別對應滑動過程中 value 值何時開始更改或何時完成更改時對應的回調;
Slider 的主題效果可以通過 SliderTheme 或 ThemeData.sliderTheme 中獲取更新,相較于 Slider 只提供已滑動和未滑動顏色效果,屬性粒度更細;
activeTrackColor 和 inactiveTrackColor 分別對應 Slider 已滑動過和未滑動過的軌道顏色;
thumbColor 對應滑動按鈕顏色,而 overlayColor 對應滑動按鈕映射的疊層顏色,通常設置為半透明狀態; overlayShape 對應疊層樣式;
valueIndicatorColor 對應 label 氣泡顏色; valueIndicatorShape 對應氣泡內文字屬性; valueIndicatorShape 對應氣泡樣式,可以再此進行自定義氣泡;
activeTickMarkColor 對應已選中刻度顏色; inactiveTickMarkColor 對應未選中刻度顏色; tickMarkShape 對應刻度樣式;
trackHeight 為 Slider 軌道高度; trackShape 對應軌道樣式,主要再此處進行自定義樣式;
對于不可滑動狀態, SliderThemeData 提供了對應屬性;
Slider 案例源碼
小菜本節暫未涉及自定義滑動條樣式,對于底層的 Slider 了解還不夠深入;如有錯誤,請多多指導!
基本和AppBar一樣,只是他只能在CustomScrollView中使用,應該很常見,滑動的時候固定appbar,就需要用到他.
大部分和appbar一樣,主要說下重要的幾個:
是否將導航欄部分固定在appbar的位置.這個需求在實際中很常用. 看看效果圖.
當 pinned = false:
可以看到appbar并沒有固定在最上面,而是根據內容劃出了界面.
當 pinned = true :
這個應該是需求中經常用到的效果了.
當floating = false :
當floating = true:
仔細看 ,區別是在列表整體向下滑動時,appbar開始顯示的位置不同.
當為false時 ,向下滑動時,會先降列表內容滑動頂部,然后appbar會跟著列表滑動顯示出來.如上圖
當為true時, 向下滑動時,appbar會先跟著列表滑動顯示出來. 然后繼續列表的滑動. 如上圖
不能單獨使用要配合 ****floating 和 ****pinned
具體效果看官網地址
是否展開,默認false,直接看值為true的效果圖,就明白了.
可以再里面添加擴展的內容:
通過測試發現 **后面不是 FlexibleSpaceBar 的話, stretch = true 無效. **
和Padding一樣.子控件是 sliver 類型...
上圖中在padding中添加了一個背景色為青色的容器widget
里面可以設置不是 sliver 類型的widget。如上圖中的 padding中添加的 container
就兩個協議,一個是布局協議一個展示協議.基本和GridView一樣.也有count和extext... 不設置個數默認無數個
SliverChildListDelegate 這種方式前提是知道cell個數,比較少,好搭建
SliverChildBuilderDelegate 這種方式,可以根據數組去創建,不知道cell個數
和listview差不多.也是協議 不設置個數默認無數個
Flutter(抖動)、Wow(晃動)、Drift(漂移)、Scrape Flutter(刮顫)是以移動介質為記錄材料做模擬錄制和回放的系統所需要面對的幾種失真。這些失真是在錄制、復制、回放過程中,由于記錄介質的不規則的運動而導致的令人不快的頻率調制所引入信號中的。抖晃率用于定量描述這種由于介質的運動速度不穩定所造成的頻率晃動對人耳的主觀影響。比如回放一個精準3150Hz的正弦信號,在理想的無抖晃的情況下,播放出來的信號就是3150Hz,然而在實際有抖晃的情況下,播放出來的信號的瞬時頻率將圍繞某個均值(不一定正好等于3150Hz)不斷變動,就是說相對于那個均值有往復變化的頻偏。
Drift(漂移)指的是信號中的頻偏低于大約0.5Hz的頻率調制。它給人的感覺是平均音調的緩慢變化。
Wow(晃動)指的是信號中的頻偏范圍為大約0.5Hz~6Hz的頻率調制。它給人的感覺是音調的波動。
Flutter(抖動)指的是信號中的頻偏范圍為大約6Hz~100Hz的頻率調制。它給人的感覺是聲音品質的粗糙化。
Scrape Flutter(刮顫)指的是信號中的頻偏高于大約100Hz的頻率調制。它由磁帶的粘連-滑動(粘滯)運動造成。它給人的感覺是聲音中有噪音,而這種噪音在沒有信號時是不存在的。這種噪音也稱為摩擦噪音或粘滯噪音。
目前有多種抖晃率測試標準,例如:CCIR,DIN, NAB, JIS等,這里介紹的是基于AES(Audio Engineering Society)的AES6-2008(r2012)標準(就是2012年的最新修訂版),它與IEC 60386、IEEE Std-193、CCIR 409-2和DIN 45507標準兼容。標準測試信號的頻率定為3150Hz。當然用3000Hz的測試頻率或其他的頻率,這里介紹的方法也適用。
《摘自Multi-Instrument軟件說明書》