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