每年,我們和其他 Google 的大型團隊一樣,都會進行規劃過程,以設定我們在未來一年的目標和重點領域。通常,產品團隊會嚴格保護這些文件,因為它們可能包含商業敏感資訊,或與競爭優勢領域相關。然而,作為一個開源專案,我們認為透明度是一種美德:它可以讓人們更信賴我們的未來和方向,並讓其他人更清楚地了解他們的投資如何與我們的投資相連。
自我們推出 Flutter 以來,我們一直專注於提供一個跨平台解決方案,用於構建精美的自定義應用程式,這些應用程式被編譯為機器碼,並充分利用您設備的底層圖形硬體。今天,隨著 Windows 作為應用程式目標的首次生產版本支援的發布,我們擴展了這個願景,使 Windows 開發人員能夠從移動開發人員一直以來享有的相同生產力和功能中受益。
但是,桌面應用程式不僅僅是在更大螢幕上運行的行動應用程式。它們是為不同的輸入設備(例如鍵盤和滑鼠)而設計的。它們具有可調整大小的視窗,通常在寬螢幕顯示器上運行。對於關鍵事項(如輔助功能、輸入法編輯器和視覺樣式)存在不同的慣例。它們與底層作業系統中的不同 API 整合:桌面應用程式支援從檔案系統選擇器到設備硬體到 Windows 登錄等數據存儲的所有內容。
因此,雖然我們將 Flutter *帶到* Windows,但我們也為 Windows *量身定制* 了它。
與我們對 Android 和 iOS 的支援一樣,Flutter 的 Windows 實作結合了 Dart 框架和 C++ 引擎。Windows 和 Flutter 通過一個嵌入層進行通訊,該嵌入層託管 Flutter 引擎,並負責轉換和分派 Windows 消息。Flutter 與 Windows 配合將您的 UI 繪製到螢幕上,處理視窗調整大小和 DPI 變化等事件,並使用現有的 Windows 模式進行國際化,例如輸入法編輯器。
在 Windows 上,Flutter 使用完全相同的 Dart 程式碼,但利用了原生 Windows API。
您的應用程式可以使用 Flutter 框架的每個部分,在 Windows 上,它也可以直接通過 Dart 的 C 互操作層或使用用 C++ 編寫的平台插件與 Win32、COM 和 Windows 執行時 API 通話。我們還適應了一些常見的 Plugin,以包含 Windows 支援,包括 camera、file_picker 和 shared_preferences。更重要的是,社群已經為各種其他套件添加了 Windows 支援,涵蓋從 Windows 工作列整合到串列埠存取的所有內容。
已經有數百個套件已適應以支援為 Windows 構建的 Flutter 應用程式。
為了獲得完全自定義的 Windows UI,您還可以利用 `fluent_ui` 和 `flutter_acrylic` 等套件來建立一個精美地表達 Microsoft Fluent 設計系統的應用程式。使用 `msix` 工具,您可以將應用程式包裝在安裝程式中,可以上傳到 Windows 上的 Microsoft Store。
總之,這促進了應用程式的創建,這些應用程式在 Windows 上看起來很棒,在 Windows 上運行很快,並且仍然可以傳輸到其他桌面或行動設備以及 Web。以下是我們到目前為止看到的一些早期範例:
一些使用 Flutter 構建的 Windows 應用程式的早期社群範例,包括 Harmonoid 和 Rows。
Microsoft 和 Flutter
我們詢問 Windows 團隊是否願意分享一些關於 Flutter 支援的意見。以下是 Microsoft Windows 開發者平台公司副總裁 Kevin Gallo 的說法:
“我們很高興看到 Flutter 添加了對創建 Windows 應用程式的支援。Windows 是一個開放平台,我們歡迎所有開發人員。我們很興奮看到 Flutter 開發人員將他們的經驗帶到 Windows,並發布到 Microsoft Store。Flutter 對 Windows 的支援是社群的一大步,我們迫不及待地想看看您將為 Windows 帶來什麼!”
我們還對 Microsoft 在 Windows 輔助功能方面進行的投資印象深刻,我們感謝該團隊的幫助,確保 Flutter 從一開始就支援螢幕閱讀器。將輔助功能視為利基需求是一個錯誤。正如 Microsoft 包容性設計工具包中的這張圖所示,我們都有理由關心提供適合不同永久性、暫時性或情境性需求的體驗。
下面的視頻演示了 Flutter 如何與 Windows Narrator 整合。出於這個視頻的目的,我們故意模糊了螢幕,讓您了解這項功能對需要它的人來說是多麼有價值。