...

Flutter穩定支持Windows,開發者做好準備了(le/liǎo)嗎?

2022-02-08
整理 | 郭露       責編 | 張紅月

出(chū)品 | CSDN(ID:CSDNnews)

Flutter是(shì)由谷歌開發的(de)開源移動UI框架,可快速在(zài)不(bù)同平台上(shàng)構建高質量原生用戶界面。Flutter支持現有的(de)所有代碼,在(zài)世界各地(dì / de)受到(dào)越來(lái)越多開發者的(de)追捧。到(dào)目前爲(wéi / wèi)止,全球已發布了(le/liǎo)近50萬個(gè)使用Flutter的(de)應用程序,其中包括來(lái)自字節跳動等大(dà)型公司的(de)應用程序,以(yǐ)及谷歌三十個(gè)團隊的(de)應用程序。據Statista和(hé / huò)SlashData的(de)分析師表示,Flutter是(shì)2021年最受歡迎的(de)跨平台UI工具。

圖片

圖源Flutter産品經Tim Sneath博客

2月4日,Flutter穩定版2.10重磅推出(chū),該版本在(zài)春節期間發布,距離上(shàng)次的(de)發布還不(bù)到(dào)兩個(gè)月。但即使在(zài)這(zhè)麽短的(de)時(shí)間内,我們已經關閉了(le/liǎo)1843個(gè)issues以(yǐ)及來(lái)自全球115名貢獻者的(de)1525個(gè)PR。此次版本更新包括Flutter對Windows的(de)重大(dà)支持更新、部分性能改進、不(bù)同平台的(de)新增功能以(yǐ)及一(yī / yì /yí)些工具的(de)改進。


1、Flutter 2.10 新特性一(yī / yì /yí)覽


1. 性能改進

Flutter 2.10版本初步支持由Flutter社區成員knopp提供的(de)繪制髒區管理功能。他(tā)爲(wéi / wèi)iOS/Metal上(shàng)的(de)單個(gè)髒區域啓用了(le/liǎo)選擇性重繪。這(zhè)将大(dà)大(dà)縮短部分基準測試中的(de)九十分位和(hé / huò)九十九分位的(de)光栅化時(shí)間,并将這(zhè)些基準測試中的(de)GPU占用率從90%以(yǐ)上(shàng)降低到(dào)10%以(yǐ)下。

除此之(zhī)外,該版本還對圖片格式進行了(le/liǎo)優化。開發者可以(yǐ)更有效地(dì / de)調節圖層透明度。基準測試中每幀光栅化時(shí)間至少縮短了(le/liǎo)三分之(zhī)一(yī / yì /yí)。

在(zài)profile和(hé / huò)release模式下,Dart代碼以(yǐ)AOT方式進行編譯。這(zhè)段代碼解鎖了(le/liǎo)許多編譯器優化和(hé / huò)激進的(de)tree-shaking。但是(shì)由于(yú)類型流分析必須涵蓋整個(gè)程序,因此對性能有些影響。2.10版本帶來(lái)了(le/liǎo)更快的(de)類型流分析實現,在(zài)基準測試中,Flutter應用程序的(de)總體構建時(shí)間縮短了(le/liǎo)約10%。

2. iOS更新

除了(le/liǎo)性能改進之(zhī)外,Flutter 2.10版本還在(zài)各平台增加了(le/liǎo)不(bù)同的(de)增強功能。例如開發者luckysmg帶來(lái)了(le/liǎo)流暢的(de)iOS鍵盤動畫、iOS相機插件的(de)穩定性提高,以(yǐ)及爲(wéi / wèi)64位架構的(de)iOS系統加入了(le/liǎo)減少内存使用的(de)新功能——壓縮指針。

3. Android更新

同時(shí)Flutter 2.10版本針對Android進行了(le/liǎo)改進。當開發者創建新應用時(shí),Flutter可支持最新版本的(de)Android,即Android 12。此外,在(zài)此版本中,我們啓用了(le/liǎo)MultiDex。如果開發者使用的(de)是(shì)低于(yú)21的(de)Android SDK版本,并超過了(le/liǎo) 64K方法數限制,隻需将 --multidex 傳遞給flutter build appbundle 或是(shì)flutter build apk ,就(jiù)能夠支持MultiDex。

4. Web更新

Flutter版本中同樣包括對于(yú)Web的(de)改進。在(zài)之(zhī)前的(de)版本中,當鼠标拖動到(dào)多行文本框的(de)邊緣時(shí),它不(bù)會同步滾動。而(ér)在(zài)2.10版本中,選擇光标拖出(chū)了(le/liǎo)文本框後,文本框會進行滾動,浏覽并選中對應的(de)内容。該功能适用于(yú)Wed和(hé / huò)桌面應用程序。

5. Material 3

Flutter 2.10是(shì)向Material 3過渡的(de)開始,其中包括從單一(yī / yì /yí)顔色生成成整個(gè)配色方案的(de)功能。

開發者可以(yǐ)使用任意顔色創建新的(de)ColorScheme類型。ThemeData 的(de)構造函數還包含一(yī / yì /yí)個(gè)新的(de) colorSchemeSeed參數,可以(yǐ)直接從顔色生成主題。此外,該版本包括了(le/liǎo) ThemeData.useMaterial3 的(de)參數,可将Widget切換到(dào)新的(de)Material 3外觀。

Flutter還增加了(le/liǎo)1028個(gè)新Material圖标。

圖片

除上(shàng)述功能以(yǐ)外,Flutter 2.10還在(zài)集成測試、DevTools以(yǐ)及VSCode等進行了(le/liǎo)改進,并徹底移除了(le/liǎo)Dev渠道(dào)以(yǐ)及對 iOS 9.3.6支持。

對于(yú)此次版本更新,最引人(rén)關注的(de)莫過于(yú)穩定支持Windows應用開發,對此,Flutter産品經理蒂姆·斯内斯(Tim Sneath)發文進行了(le/liǎo)詳細解讀,讓我們一(yī / yì /yí)起來(lái)看一(yī / yì /yí)下。


2、已爲(wéi / wèi)Windows做好準備的(de)Flutter


圖片

圖源Flutter官網

Flutter旨在(zài)創建高效跨平台軟件框架,在(zài)過去幾年取得了(le/liǎo)長足發展。Flutter可爲(wéi / wèi) Android、iOS、Linux、Windows、macOS 以(yǐ)及網頁開發應用,并兼容現有的(de)所有代碼。受到(dào)了(le/liǎo)全球各地(dì / de)區開發者的(de)支持信賴。

谷歌表示:“今天标志着這(zhè)一(yī / yì /yí)願景的(de)重大(dà)擴展,首次發布了(le/liǎo)對Windows作爲(wéi / wèi)應用目标的(de)支持,使Windows開發者能夠受益于(yú)移動開發者一(yī / yì /yí)直享有的(de)同樣的(de)生産力和(hé / huò)力量”。

爲(wéi / wèi)實現這(zhè)一(yī / yì /yí)目标,谷歌一(yī / yì /yí)直緻力于(yú)Flutter開發。五年前,谷歌曾推出(chū)Flutter Alpha,該版本大(dà)大(dà)提高了(le/liǎo)移動操作系統的(de)開發速度。Flutter應用程序可使用Dart編寫,實現了(le/liǎo)在(zài)Android、iOS、Windows、macOS和(hé / huò)Linux、Web以(yǐ)及嵌入式設備上(shàng)運行。

然而(ér), 要(yào / yāo)想實現Flutter桌面支持并非易事,必須重新針對Windows進行設計,桌面應用需要(yào / yāo)兼容鍵盤和(hé / huò)鼠标等不(bù)同硬件以(yǐ)及不(bù)同大(dà)小的(de)屏幕,同時(shí)對于(yú)輸入法、視覺樣式等也(yě)有不(bù)同的(de)需求,還要(yào / yāo)支持文件系統選擇器以(yǐ)及Windows注冊表等數據存儲的(de)各種内容。

正如Flutter對Android和(hé / huò)iOS的(de)支持一(yī / yì /yí)樣,Flutter的(de)Windows結合了(le/liǎo)Dart框架以(yǐ)及C++ 引擎。Windows和(hé / huò)Flutter 通過嵌入層進行通信,該嵌入層承載Flutter引擎并負責翻譯和(hé / huò)分發Windows信息。Flutter與Windows可将UI繪制到(dào)屏幕上(shàng),并與現有的(de) Windows模式相配合。

圖片

圖源來(lái)自Flutter和(hé / huò)Dart産品經理博客

開發者可在(zài)Windows上(shàng)使用Flutter框架的(de)所有功能,并通過Dart或C++ 編寫的(de)平台插件與Win32、COM和(hé / huò)Windows Runtime API進行通信,同時(shí)Flutter團隊還對許多常用插件進行調整以(yǐ)支持Windows,其中包括camera、file_picker以(yǐ)及shared_preferences 。更重要(yào / yāo)的(de)是(shì),Flutter社區中還添加了(le/liǎo)大(dà)量對其他(tā)包的(de)Windows支持,其中涵蓋了(le/liǎo)從Windows 任務欄集成到(dào)串行端口訪問的(de)所有内容 。

圖片

已有數百個(gè)包經過調整以(yǐ)支持爲(wéi / wèi)Windows構建的(de)Flutter應用程序

對于(yú)完全定制的(de) Windows UI,您還可以(yǐ)使用包fluent_ui來(lái)flutter_acrylic創建一(yī / yì /yí)個(gè)可以(yǐ)精美地(dì / de)表達 Microsoft Fluent 設計系統的(de)應用程序。使用該msix工具,您可以(yǐ)将您的(de)應用程序包裝在(zài)一(yī / yì /yí)個(gè)安裝程序中,該安裝程序可以(yǐ)上(shàng)傳到(dào) Windows 上(shàng)的(de) Microsoft Store。

總的(de)來(lái)說(shuō),Flutter 2.10的(de)推出(chū)實現了(le/liǎo)在(zài)Windows上(shàng)的(de)快速運行,并且可以(yǐ)傳輸到(dào)其他(tā)桌面或移動設備以(yǐ)及Web。以(yǐ)下是(shì)早期示例:

圖片

圖源自Flutter官網

圖片

圖源自Flutter官網

圖片

圖源自Flutter官網

該版本推出(chū)後,微軟Windows開發者平台公司副總裁Kevin Gallo表示:”我們很高興看到(dào)Flutter實現對創建Windows應用程序的(de)支持。作爲(wéi / wèi)一(yī / yì /yí)個(gè)開放平台,Windows歡迎所有開發人(rén)員的(de)加入。Flutter能實現Windows應用支持并在(zài)Microsoft Store上(shàng)架,表明其對我們的(de)信任,期待Flutter在(zài)Windows上(shàng)的(de)發展!”

除此之(zhī)外,許多Flutter合作夥伴也(yě)在(zài)增加對Windows的(de)支持,其中包括:

  1. 作爲(wéi / wèi)低代碼Flutter應用程序設計工具,FlutterFlow宣布支持Windows并将幫助Flutter開發人(rén)員構建專爲(wéi / wèi)桌面使用的(de)功能。

  2. 本地(dì / de)數據存儲工具Realm的(de)最新版本支持使用Flutter構建Windows應用程序,使用Dart FFI快速訪問底層數據庫,并增加了(le/liǎo)對 iOS 和(hé / huò)Android等移動平台的(de)現有支持。

  3. Nevercode已更新Codemagic CI/CD 工具以(yǐ)支持Windows,使用戶能夠在(zài)雲中測試并構建Windows應用程序,并自動部署到(dào)Microsoft Store。

  4. Syncfusion已更新小部件支持Windows。數據可視化組件等支持創建PDF文件和(hé / huò) Excel表格。

  5. Rive宣布了(le/liǎo)其圖形工具套件即将推出(chū)Windows版本,開發人(rén)員可創建可以(yǐ)使用狀态機實時(shí)響應代碼的(de)交互式矢量動畫。他(tā)們還将推出(chū)Windows應用程序,在(zài)性能和(hé / huò)内存上(shàng)有着不(bù)俗的(de)表現,很快将在(zài)Microsoft Store中提供下載。

目前看來(lái),大(dà)家對于(yú)Flutter 2.10的(de)評價依舊非常好。@開發者,對于(yú)Flutter 穩定支持Windows,你做好準備了(le/liǎo)嗎?是(shì)否已經Demo起來(lái)了(le/liǎo)呢,歡迎留言分享。

【參考資料】

  • 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


來(lái)源:CSDN