Google釋出最新Flutter 2.5,這個新版本擁有大量更新,是目前Flutter發表以來第二大的版本,總共有252個貢獻者,和216個程式碼審查者參與開發,合併3,932個拉取請求解決了4,600個問題。這些更新重點在於改進效能和工具,並且加入新功能,包括支援Android全螢幕、Material You,還有在VS Code專案中加入相依項目等。

Flutter 2.5最受矚目的更新,便是在效能方面的進展,特別是利用預熱著色器的方式改善iOS上卡頓的情況,但官方提到,著色器冷啟動並非卡頓的唯一原因,過去處理網路、檔案系統、擴充套件和其他非同步事件,都可能會中斷動畫,這是另一個卡頓的來源,在這個新版本中,開發團隊改進UI隔離事件循環上的調度策略,使得影格處理的優先度高於其他非同步事件,因此消除更多了卡頓情況。

另外,垃圾回收器暫停UI執行緒來回收記憶體,也是造成卡頓的原因之一,由於過去部分圖像的記憶體採懶散回收方法,來回應Dart虛擬機器所執行的垃圾回收工作,過去的解決辦法,是Flutter引擎會向Dart虛擬機器,暗示圖像記憶體可以透過垃圾回收器回收,官方提到,雖然在理論上可以更即時地回收記憶體,但實際上由於太多主要垃圾回收工作,使得記憶體沒辦法更快回收,導致裝置上記憶體不足,而Flutter 2.5改善了這個問題,現在圖像記憶體會被迅速回收。

記憶體回收效率的改進,可以從垃圾回收次數下降觀察,在官方的測試中,過去播放20秒GIF動畫,需要400多次的垃圾回收,現在只需要4次,官方表示,更少的垃圾回收,減少消耗的CPU和電力,能夠降低圖像顯示和消失動畫的卡頓。

新版Flutter另一項效能改進,是Dart和Objective-C/Swift,以及Dart和Java/Kotlin之間發送訊息的延遲,官方藉由移除不必要的訊息解碼器副本,來降低50%以上的延遲,效能改進的幅度,取決於訊息的大小和裝置。

Flutter 2.5對框架進行了不少修復和改進,官方先從Android下手,修復一系列和全螢幕模式相關的問題,並且增加對各種Android全螢幕模式的支援,這影響系統UI覆蓋層,像是狀態列和底部導覽列的可見性,模式分別有lean back、immersive、immersive sticky以及edge to edge,該更新同時提供開發者在其他模式下,監聽全螢幕變更的方法,像是在用戶與應用程式互動,當系統UI出現時,開發者便可以編寫程式碼,以回到全螢幕或是進行額外處理。

Flutter也更完整地支援Material You規範,包括浮動操作按鈕大小,以及主題更新。在頁面滾動方面則添加了滾動指標通知,即便用戶沒有進行滾動操作,也能夠提供可滾動區域通知,讓滾動條根據ListView底層大小,視情況出現或是消失。

現在Flutter 2.5支援在應用程式頂部,出現Material橫幅,該橫幅會一直顯示直到用戶關閉,由於Material指南規定,應用程式的橫幅只能一次出現一個,因此該橫幅功能會維護一個佇列,在前一個橫幅被關閉後,才會出現新的橫幅。

在這個版本,適用於VS Code的Flutter擴充套件也獲得更新,加入兩個指令分別是,Dart: Add Dependency和Dart: Add Dev Dependency,讓開發者可以簡單地在專案中,添加相依項目。

熱門新聞

Advertisement