Flutter Windows 桌面端支持進(jìn)入穩(wěn)定版
Flutter 創(chuàng)建伊始,我們就致力于打造一個(gè)能夠構(gòu)建精美的、可高度定制的、并且可以編譯為機(jī)器碼的跨平臺(tái)應(yīng)用解決方案,以充分發(fā)揮設(shè)備底層硬件的全部圖形渲染能力。今天,F(xiàn)lutter 對(duì) Windows 生產(chǎn)版本的正式支持是對(duì)這一愿景實(shí)現(xiàn)的重要標(biāo)志。它使 Windows 開(kāi)發(fā)者也能享受到移動(dòng)開(kāi)發(fā)的相同生產(chǎn)力和功能。

Flutter 的目標(biāo)是在任何平臺(tái)上為你提供出色的構(gòu)建體驗(yàn),并且我們想要打造的是:只需要使用同一套核心框架和工具完成這個(gè)目標(biāo)。通過(guò) Flutter,你可以自由打造 優(yōu)美 的使用體驗(yàn),使你的品牌和設(shè)計(jì)脫穎而出;它還擁有 極高 的執(zhí)行速度,因?yàn)樗鼤?huì)被直接編譯為機(jī)器碼;而通過(guò)支持有狀態(tài)的熱重載功能以提供交互式的體驗(yàn),讓你可以在應(yīng)用運(yùn)行時(shí)直接看到代碼更改后的結(jié)果,從而獲得 生產(chǎn)力 提升。Flutter 是開(kāi)放的,成千上萬(wàn)的貢獻(xiàn)者參與到核心框架的構(gòu)建,或是通過(guò) package 和插件生態(tài)系統(tǒng)對(duì)其進(jìn)行擴(kuò)展。
迄今為止,我們看到這股趨勢(shì)已經(jīng)超出了我們的預(yù)期。包括一些大公司例如 Betterment、寶馬以及字節(jié)跳動(dòng)等,還有 Google 內(nèi)部三十多個(gè)團(tuán)隊(duì)都使用了 Flutter。根據(jù) Statista 以及 SlashData 的統(tǒng)計(jì),F(xiàn)lutter 在 2021 年已經(jīng)成為了最流行的跨端 UI 工具包。

我們自己的數(shù)據(jù)也能支持這一點(diǎn),在 2021 年四個(gè)季度的開(kāi)發(fā)者調(diào)查中,有 92% 的 Flutter 開(kāi)發(fā)者對(duì)我們提供的工具表示滿意。(對(duì)于另外 8% 的人,我們正在傾聽(tīng)你的反饋,希望也能得到你的滿意)。
這其中共同的需求之一就是對(duì) Windows 的支持,
今天,我們很高興的宣布,我們此次發(fā)布的 Flutter 穩(wěn)定版中,已經(jīng)全面支持構(gòu)建 Windows 桌面端應(yīng)用程序了!
Windows 與 Flutter
幾年前,我們?yōu)?Flutter 制定了一個(gè)宏大的愿景,即從 iOS 和 Android 的移動(dòng)端應(yīng)用上擴(kuò)展到其他平臺(tái),其中就包括 Web 端和桌面端。
Flutter 的核心部分是跨平臺(tái)的:從可移植的硬件加速的 Skia 圖形渲染引擎,到 Flutter 的渲染系統(tǒng)的核心單元,例如動(dòng)畫、主題、文本輸入以及國(guó)際化,F(xiàn)lutter 提供了上百個(gè) widgets。
然而桌面端并不只是移動(dòng)應(yīng)用運(yùn)行在一個(gè)更大的屏幕上這么簡(jiǎn)單,它們從設(shè)計(jì)上來(lái)說(shuō)就很不一樣。從輸入設(shè)備角度來(lái)看,桌面端有鍵盤和鼠標(biāo),它們會(huì)在顯示器上運(yùn)行多個(gè)可變大小的窗口。而對(duì)于輔助功能 (Accessibility)、輸入法、視覺(jué)樣式等關(guān)鍵內(nèi)容都有不同的規(guī)則約束。并且它們還和底層操作系統(tǒng)中不同的 API 進(jìn)行集成:桌面應(yīng)用支持從系統(tǒng)的文件選擇器到設(shè)備硬件再到 Windows 注冊(cè)表等數(shù)據(jù)存儲(chǔ)的所有內(nèi)容。
所以當(dāng)我們把 Flutter 帶到 Windows 上時(shí),我們也需要為它進(jìn)行定制。
正如我們對(duì) Android 和 iOS 的支持那樣,對(duì) Windows 的實(shí)現(xiàn)也包括了 Dart 框架以及 C++ 的引擎。Windows 與 Flutter 通過(guò)承載了 Flutter 引擎的 嵌入層(Embedder) 進(jìn)行通信,翻譯以及發(fā)送 Windows 都是 嵌入層 的職責(zé)范圍。Flutter 與 Windows 共同將你的 UI 繪制到屏幕上,處理窗口大小調(diào)整和 DPI 更改等事件,并與已有的 Windows (如輸入法編輯器) 配合使用。

在 Windows 上,F(xiàn)lutter 使用了一套完全相同的 Dart 代碼,但是能夠使用 Windows 的 API。
你的應(yīng)用能夠使用 Flutter 框架的全部功能,在 Windows 上,它還可以直接通過(guò) Dart 的 C 互操作層或使用用 C++ 編寫的平臺(tái)插件與 Win32、COM 和 Windows 運(yùn)行時(shí) API 進(jìn)行通信。我們還適配了許多常用插件以包含對(duì) Windows 的支持,包括camera,file_picker和shared_preferences。更重要的是,社區(qū)已經(jīng)添加了各種其他 package 對(duì) Windows 的支持,涵蓋了從 Windows 任務(wù)欄集成到串行端口訪問(wèn)的全部?jī)?nèi)容。

要完全為 Windows 的 UI 進(jìn)行定制,你也可以使用例如像是 fluent_ui 以及 flutter_acrylic 這樣的 package 創(chuàng)造具有 Microsoft Fluent 設(shè)計(jì)美學(xué)的應(yīng)用。而且使用 msix 工具能將你的應(yīng)用包裝進(jìn)安裝器,這樣就可以上傳到 Windows 上的 Microsoft Store。
總的來(lái)說(shuō),這促進(jìn)了在 Window 平臺(tái)上創(chuàng)建應(yīng)用程序。以極快的速度在 Windows 上運(yùn)行的同時(shí)還能轉(zhuǎn)到其他桌面或者移動(dòng)應(yīng)用以及 web 平臺(tái)上運(yùn)行。讓我們來(lái)看看到目前為止的一些早期樣例:

Microsoft 與 Flutter
我們?cè)儐?wèn)過(guò) Windows 團(tuán)隊(duì)是否愿意分享一些對(duì) Flutter 支持的話。這是微軟公司 Windows 開(kāi)發(fā)者平臺(tái)副總裁 Kevin Gallo 的評(píng)論:
"我們很高興看到 Flutter 增加了對(duì)創(chuàng)建 Windows 應(yīng)用程序的支持。Windows 是一個(gè)開(kāi)放的平臺(tái),我們歡迎所有開(kāi)發(fā)人員。我們很高興看到 Flutter 開(kāi)發(fā)人員將他們的體驗(yàn)帶到 Windows 上,并發(fā)布到 Microsoft Store。對(duì) Windows 的支持是 Flutter 社區(qū)的一大步,我們迫不及待地想看看你能為 Windows 帶來(lái)哪些令人驚嘆的應(yīng)用!
事實(shí)上,許多 Microsoft 的團(tuán)隊(duì)也都為今天的發(fā)布做出了很大貢獻(xiàn)。我們特別想要感謝 Fluent design 團(tuán)隊(duì)對(duì)于支持 Windows 上 Flutter 應(yīng)用的圖標(biāo)做出的貢獻(xiàn)。他們高質(zhì)量的 fluentui_system_icons package 已經(jīng)加入到 Flutter Favorite 項(xiàng)目中了。
同時(shí),Microsoft 圍繞 Windows 可訪問(wèn)性所做的投入也給我們留下了深刻的印象,非常感謝該團(tuán)隊(duì)的幫助,以確保 Flutter 從第一天起就能夠?yàn)槠聊婚喿x器提供支持。將無(wú)障礙功能視為額外的需求是錯(cuò)誤的。正如 Microsoft 包容性設(shè)計(jì)工具包 中的這張圖片所示,我們必須要關(guān)注提供永久、臨時(shí)或不同情境下需求的體驗(yàn)。

下面的視頻演示了 Flutter 如何集成 Windows 講述人 (Windows Narrator) 功能。出于本視頻的目的,我們特意模糊了屏幕,讓你了解此功能對(duì)需要它的用戶的價(jià)值。
Windows 講述人是一個(gè)為 Windows 打造的屏幕閱讀器,它同樣能夠在 Flutter 應(yīng)用中良好的運(yùn)行。
Windows 開(kāi)發(fā)生態(tài)工具集
我們的開(kāi)發(fā)工具合作伙伴們也開(kāi)始為 Windows 桌面端應(yīng)用程序開(kāi)發(fā)增加支持,比如:
- FlutterFlow 是低代碼、拖拽式生成 Flutter 應(yīng)用的工具,F(xiàn)lutterFlow 今天正式宣布支持了 Windows 平臺(tái),同時(shí)還宣布了一些幫助 Flutter 開(kāi)發(fā)者建立桌面應(yīng)用的很多功能。
- Realm 是一個(gè)快速的本地?cái)?shù)據(jù)存儲(chǔ)服務(wù)。今天發(fā)布的最新版本支持使用 Flutter 構(gòu)建Windows 桌面端應(yīng)用程序,他們使用 Dart FFI 快速訪問(wèn)底層數(shù)據(jù)庫(kù),并增加了他們對(duì) iOS 和Android 等移動(dòng)平臺(tái)的現(xiàn)有支持。
- Nevercode 團(tuán)隊(duì)更新了他們的 Codemagic CI/CD tool 工具并開(kāi)始支持 Windows 桌面端,你可以在云端測(cè)試和構(gòu)建 Windows 應(yīng)用,并將其發(fā)布到 Microsoft Store。
- Syncfusion 更新了工具套件以充分發(fā)揮在 Windows 平臺(tái)的優(yōu)勢(shì)。如果你在使用他們提供的服務(wù),你會(huì)發(fā)現(xiàn)他們的數(shù)據(jù)可視化組件,比如樹(shù)狀圖、線性規(guī)、火花圖表,日歷組件甚至是 PDF 和 Excel 生成組件都已經(jīng)支持了 Flutter,Syncfusion Flutter widget 是用 Dart 原生構(gòu)建的。
- 近期,Rive 宣布推出其流行的圖形工具套件的 Windows 版本,它能夠讓設(shè)計(jì)人員和開(kāi)發(fā)人員創(chuàng)建交互式矢量動(dòng)畫,這些動(dòng)畫可以使用狀態(tài)機(jī)實(shí)時(shí)響應(yīng)代碼。即將推出的 Windows 版本的應(yīng)用程序提供了驚人的性能和更低的內(nèi)存占用,并將很快將在 Microsoft Store 中提供下載。

看到圍繞著 Flutter 的建立的成熟生態(tài),我們非常激動(dòng),在你開(kāi)始使用 Flutter 構(gòu)建 Windows 應(yīng)用的時(shí)候,我們鼓勵(lì)你多嘗試一下生態(tài)里的這些合作伙伴的服務(wù)和工具。
Flutter 2.10 中的 Windows 平臺(tái)支持
作為 Flutter 2.10 正式版的一部分,F(xiàn)lutter 已經(jīng)可以為 Windows 平臺(tái)構(gòu)建應(yīng)用程序提供穩(wěn)定的、具備生產(chǎn)質(zhì)量的支持,F(xiàn)lutter 2.10 還包含諸多其他新特性和性能改進(jìn)以及錯(cuò)誤修復(fù),在今天的另一篇推文中已經(jīng)詳細(xì)介紹。
在未來(lái)幾個(gè)月里,我們會(huì)發(fā)布更多為 macOS 和 Linux 平臺(tái)提供穩(wěn)定版支持的消息,讓你可以通過(guò) Flutter 為更全的桌面平臺(tái)、Web 平臺(tái)和移動(dòng)端平臺(tái)構(gòu)建精美應(yīng)用!
再次感謝大家對(duì) Flutter 的支持,期待看到你為 Windows 平臺(tái)構(gòu)建的精彩應(yīng)用程序!

- 如果你想將上面這個(gè)圖片當(dāng)作桌面背景,請(qǐng)點(diǎn)擊點(diǎn)擊這個(gè)鏈接下載原圖: https://files.flutter-io.cn/images/branding/desktop/dash2022_4k.png
致謝
- 原文: Announcing Flutter for Windows
- 鏈接: https://medium.com/flutter/announcing-flutter-for-windows-6979d0d01fed
- 翻譯: Vadaski
- 審校: Luke
- 制圖: Lynn
posted on 2022-02-05 21:02 Flutter社區(qū) 閱讀(1337) 評(píng)論(1) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)