Flutter穩(wěn)定支持Windows,開發(fā)者做好準(zhǔn)備了嗎?
Flutter是由谷歌開發(fā)的開源移動(dòng)UI框架,可快速在不同平臺(tái)上構(gòu)建高質(zhì)量原生用戶界面。Flutter支持現(xiàn)有的所有代碼,在世界各地受到越來越多開發(fā)者的追捧。到目前為止,全球已發(fā)布了近50萬個(gè)使用Flutter的應(yīng)用程序,其中包括來自字節(jié)跳動(dòng)等大型公司的應(yīng)用程序,以及谷歌三十個(gè)團(tuán)隊(duì)的應(yīng)用程序。據(jù)Statista和SlashData的分析師表示,F(xiàn)lutter是2021年最受歡迎的跨平臺(tái)UI工具。
圖源Flutter產(chǎn)品經(jīng)理Tim Sneath博客
2月4日,F(xiàn)lutter穩(wěn)定版2.10重磅推出,該版本在春節(jié)期間發(fā)布,距離上次的發(fā)布還不到兩個(gè)月。但即使在這么短的時(shí)間內(nèi),我們已經(jīng)關(guān)閉了1843個(gè)issues以及來自全球115名貢獻(xiàn)者的1525個(gè)PR。此次版本更新包括Flutter對(duì)Windows的重大支持更新、部分性能改進(jìn)、不同平臺(tái)的新增功能以及一些工具的改進(jìn)。
1、Flutter 2.10 新特性一覽
1. 性能改進(jìn)
Flutter 2.10版本初步支持由Flutter社區(qū)成員knopp提供的繪制臟區(qū)管理功能。他為iOS/Metal上的單個(gè)臟區(qū)域啟用了選擇性重繪。這將大大縮短部分基準(zhǔn)測(cè)試中的九十分位和九十九分位的光柵化時(shí)間,并將這些基準(zhǔn)測(cè)試中的GPU占用率從90%以上降低到10%以下。
除此之外,該版本還對(duì)圖片格式進(jìn)行了優(yōu)化。開發(fā)者可以更有效地調(diào)節(jié)圖層透明度?;鶞?zhǔn)測(cè)試中每幀光柵化時(shí)間至少縮短了三分之一。
在profile和release模式下,Dart代碼以AOT方式進(jìn)行編譯。這段代碼解鎖了許多編譯器優(yōu)化和激進(jìn)的tree-shaking。但是由于類型流分析必須涵蓋整個(gè)程序,因此對(duì)性能有些影響。2.10版本帶來了更快的類型流分析實(shí)現(xiàn),在基準(zhǔn)測(cè)試中,F(xiàn)lutter應(yīng)用程序的總體構(gòu)建時(shí)間縮短了約10%。
2. iOS更新
除了性能改進(jìn)之外,F(xiàn)lutter 2.10版本還在各平臺(tái)增加了不同的增強(qiáng)功能。例如開發(fā)者luckysmg帶來了流暢的iOS鍵盤動(dòng)畫、iOS相機(jī)插件的穩(wěn)定性提高,以及為64位架構(gòu)的iOS系統(tǒng)加入了減少內(nèi)存使用的新功能——壓縮指針。
3. Android更新
同時(shí)Flutter 2.10版本針對(duì)Android進(jìn)行了改進(jìn)。當(dāng)開發(fā)者創(chuàng)建新應(yīng)用時(shí),F(xiàn)lutter可支持最新版本的Android,即Android 12。此外,在此版本中,我們啟用了MultiDex。如果開發(fā)者使用的是低于21的Android SDK版本,并超過了 64K方法數(shù)限制,只需將 --multidex 傳遞給flutter build appbundle 或是flutter build apk ,就能夠支持MultiDex。
4. Web更新
Flutter版本中同樣包括對(duì)于Web的改進(jìn)。在之前的版本中,當(dāng)鼠標(biāo)拖動(dòng)到多行文本框的邊緣時(shí),它不會(huì)同步滾動(dòng)。而在2.10版本中,選擇光標(biāo)拖出了文本框后,文本框會(huì)進(jìn)行滾動(dòng),瀏覽并選中對(duì)應(yīng)的內(nèi)容。該功能適用于Wed和桌面應(yīng)用程序。
5. Material 3
Flutter 2.10是向Material 3過渡的開始,其中包括從單一顏色生成成整個(gè)配色方案的功能。
開發(fā)者可以使用任意顏色創(chuàng)建新的ColorScheme類型。ThemeData 的構(gòu)造函數(shù)還包含一個(gè)新的 colorSchemeSeed參數(shù),可以直接從顏色生成主題。此外,該版本包括了 ThemeData.useMaterial3 的參數(shù),可將Widget切換到新的Material 3外觀。
Flutter還增加了1028個(gè)新Material圖標(biāo)。
除上述功能以外,F(xiàn)lutter 2.10還在集成測(cè)試、DevTools以及VSCode等進(jìn)行了改進(jìn),并徹底移除了Dev渠道以及對(duì) iOS 9.3.6支持。
對(duì)于此次版本更新,最引人關(guān)注的莫過于穩(wěn)定支持Windows應(yīng)用開發(fā),對(duì)此,F(xiàn)lutter產(chǎn)品經(jīng)理蒂姆·斯內(nèi)斯(Tim Sneath)發(fā)文進(jìn)行了詳細(xì)解讀,讓我們一起來看一下。
2、已為Windows做好準(zhǔn)備的Flutter
圖源Flutter官網(wǎng)
Flutter旨在創(chuàng)建高效跨平臺(tái)軟件框架,在過去幾年取得了長足發(fā)展。Flutter可為 Android、iOS、Linux、Windows、macOS 以及網(wǎng)頁開發(fā)應(yīng)用,并兼容現(xiàn)有的所有代碼。受到了全球各地區(qū)開發(fā)者的支持信賴。
谷歌表示:“今天標(biāo)志著這一愿景的重大擴(kuò)展,首次發(fā)布了對(duì)Windows作為應(yīng)用目標(biāo)的支持,使Windows開發(fā)者能夠受益于移動(dòng)開發(fā)者一直享有的同樣的生產(chǎn)力和力量”。
為實(shí)現(xiàn)這一目標(biāo),谷歌一直致力于Flutter開發(fā)。五年前,谷歌曾推出Flutter Alpha,該版本大大提高了移動(dòng)操作系統(tǒng)的開發(fā)速度。Flutter應(yīng)用程序可使用Dart編寫,實(shí)現(xiàn)了在Android、iOS、Windows、macOS和Linux、Web以及嵌入式設(shè)備上運(yùn)行。
然而, 要想實(shí)現(xiàn)Flutter桌面支持并非易事,必須重新針對(duì)Windows進(jìn)行設(shè)計(jì),桌面應(yīng)用需要兼容鍵盤和鼠標(biāo)等不同硬件以及不同大小的屏幕,同時(shí)對(duì)于輸入法、視覺樣式等也有不同的需求,還要支持文件系統(tǒng)選擇器以及Windows注冊(cè)表等數(shù)據(jù)存儲(chǔ)的各種內(nèi)容。
正如Flutter對(duì)Android和iOS的支持一樣,F(xiàn)lutter的Windows結(jié)合了Dart框架以及C++ 引擎。Windows和Flutter 通過嵌入層進(jìn)行通信,該嵌入層承載Flutter引擎并負(fù)責(zé)翻譯和分發(fā)Windows信息。Flutter與Windows可將UI繪制到屏幕上,并與現(xiàn)有的 Windows模式相配合。
圖源來自Flutter和Dart產(chǎn)品經(jīng)理博客
開發(fā)者可在Windows上使用Flutter框架的所有功能,并通過Dart或C++ 編寫的平臺(tái)插件與Win32、COM和Windows Runtime API進(jìn)行通信,同時(shí)Flutter團(tuán)隊(duì)還對(duì)許多常用插件進(jìn)行調(diào)整以支持Windows,其中包括camera、file_picker以及shared_preferences 。更重要的是,F(xiàn)lutter社區(qū)中還添加了大量對(duì)其他包的Windows支持,其中涵蓋了從Windows 任務(wù)欄集成到串行端口訪問的所有內(nèi)容 。
已有數(shù)百個(gè)包經(jīng)過調(diào)整以支持為Windows構(gòu)建的Flutter應(yīng)用程序
對(duì)于完全定制的 Windows UI,您還可以使用包fluent_ui來flutter_acrylic創(chuàng)建一個(gè)可以精美地表達(dá) Microsoft Fluent 設(shè)計(jì)系統(tǒng)的應(yīng)用程序。使用該msix工具,您可以將您的應(yīng)用程序包裝在一個(gè)安裝程序中,該安裝程序可以上傳到 Windows 上的 Microsoft Store。
總的來說,F(xiàn)lutter 2.10的推出實(shí)現(xiàn)了在Windows上的快速運(yùn)行,并且可以傳輸?shù)狡渌烂婊蛞苿?dòng)設(shè)備以及Web。以下是早期示例:
圖源自Flutter官網(wǎng)
圖源自Flutter官網(wǎng)
圖源自Flutter官網(wǎng)
該版本推出后,微軟Windows開發(fā)者平臺(tái)公司副總裁Kevin Gallo表示:”我們很高興看到Flutter實(shí)現(xiàn)對(duì)創(chuàng)建Windows應(yīng)用程序的支持。作為一個(gè)開放平臺(tái),Windows歡迎所有開發(fā)人員的加入。Flutter能實(shí)現(xiàn)Windows應(yīng)用支持并在Microsoft Store上架,表明其對(duì)我們的信任,期待Flutter在Windows上的發(fā)展!”
除此之外,許多Flutter合作伙伴也在增加對(duì)Windows的支持,其中包括:
作為低代碼Flutter應(yīng)用程序設(shè)計(jì)工具,F(xiàn)lutterFlow宣布支持Windows并將幫助Flutter開發(fā)人員構(gòu)建專為桌面使用的功能。
本地?cái)?shù)據(jù)存儲(chǔ)工具Realm的最新版本支持使用Flutter構(gòu)建Windows應(yīng)用程序,使用Dart FFI快速訪問底層數(shù)據(jù)庫,并增加了對(duì) iOS 和Android等移動(dòng)平臺(tái)的現(xiàn)有支持。
Nevercode已更新Codemagic CI/CD 工具以支持Windows,使用戶能夠在云中測(cè)試并構(gòu)建Windows應(yīng)用程序,并自動(dòng)部署到Microsoft Store。
Syncfusion已更新小部件支持Windows。數(shù)據(jù)可視化組件等支持創(chuàng)建PDF文件和 Excel表格。
Rive宣布了其圖形工具套件即將推出Windows版本,開發(fā)人員可創(chuàng)建可以使用狀態(tài)機(jī)實(shí)時(shí)響應(yīng)代碼的交互式矢量動(dòng)畫。他們還將推出Windows應(yīng)用程序,在性能和內(nèi)存上有著不俗的表現(xiàn),很快將在Microsoft Store中提供下載。
目前看來,大家對(duì)于Flutter 2.10的評(píng)價(jià)依舊非常好。@開發(fā)者,對(duì)于Flutter 穩(wěn)定支持Windows,你做好準(zhǔn)備了嗎?是否已經(jīng)Demo起來了呢,歡迎留言分享。
【參考資料】
https://www.theregister.com/2022/ 02/04/flutter_windows_production_release/
https://medium.com/flutter/announcing-flutter-for-windows-6979d0d01fed
https://medium.com/flutter/whats-new-in-flutter-2-10-5aafb0314b12