【文章翻譯】Material and Cupertino decoupling are here
【文章內容使用 Gemini 2.5 Flash 自動翻譯產生】
原文:https://flutter.dev/blog/decoupling-material-cupertino
Material 和 Cupertino 的解耦終於實現了
長久以來,Flutter 都是一個「內建電池」的框架,擁有出色的工具、設計系統、動畫等。但電池並非永恆,因此在需要時能夠更換它們非常重要。回溯到 2017 年,當 Flutter 接近可行性時,提升 Material 和 Cupertino 的地位被普遍認為是正確的決定。快轉到 2020 年代,這種觀點發生了轉變,Material 和 Cupertino 這兩塊電池開始感覺更像是焊死的,而不是簡單地內建的。多年來,改進這個系統一直是 Flutter 開發人員最主要的需求。現在,到了 2026 年,一個漫長的過程終於讓這個開發人員的願望成真。
我們正在做什麼
從幾個月前開始,並於 2026 年 8 月完成,這項工作凍結了對 Flutter 框架內 Material 和 Cupertino 函式庫的貢獻,並在 pub.dev 上以 1.0.0 版本發布了完全相同的 pkg:material_ui 和 pkg:cupertino_ui 複本。 (這些外部函式庫並未凍結,並已準備好接受貢獻!) 然後,在未來某個日期,這項工作將完成,Material 和 Cupertino 函式庫將從 Flutter 框架本身中棄用並最終移除。
暫停其他工作以完成此舉的原因有很多,其中一些如下所述。
減少更新 Flutter 時的摩擦
多年來,升級 Flutter 以獲取安全補丁和其他修復,必然會包含任何 Material 或 Cupertino UI 更新。毋庸置疑,這是開發人員摩擦的主要來源,導致許多團隊停留在較舊的 Flutter 版本。這也意味著當團隊最終啟動升級時,這項任務可能會耗費開發人員數週的時間,並在團隊解決 UI 變更時瓶頸整個儲存庫。
現在,Material 和 Cupertino 函式庫已從核心框架中遷移出來,我們預計更新 Flutter 將恢復到它本來應該是一個簡單的任務——僅當底層平台變更需要 Flutter 開發人員注意時才會變得複雜。
加速 Material 和 Cupertino 的進程
Flutter 每 3 個月發布一個新的穩定版本,對於其範圍的專案來說,這個速度相當快。然而,儘管速度很快,它仍然意味著最壞的情況(在穩定版本截止後一分鐘提交程式碼)可能會導致 16 週的延遲,直到該變更在穩定版本中發布。這…不太好。
現在,pkg:material_ui 和 pkg:cupertino_ui 分別獨立成套件,可以按照自己的每週排程發布。這簡化了 CI 工作流程,並且更容易貢獻,特別是對於那些不熟悉 Flutter 內部結構的人來說。
基於這些原因,我們預計 Material 和 Cupertino 將加速開發進程,並更好地與 Google 和 Apple 的設計語言更新保持同步。例如,Liquid Glass 和 Material 3 Expressive 的官方實作已經在進行中。我們正在與我們的套件作者社群合作,以確保 Flutter 對這些函式庫的實作具有最佳的品質和相容性。
強化基礎 Widget
在 Flutter 框架中提升 Material 和 Cupertino 函式庫的地位所造成的意想不到的後果之一是,在這些設計函式庫中構建基礎功能太具誘惑力了。兩者在技術上都是在普通 widgets 函式庫之上構建的,但 widgets 函式庫本身充滿了基本 UI 概念中的漏洞和空白。
為了解決這個問題,解耦工作的一部分將填補 widgets 函式庫中的這些空白,以提供一個更堅實的基礎,開發人員可以在其之上構建其他設計語言。Flutter 生態系統已經支援許多設計語言,包括 macos_ui、fluent_ui、yaru、arna、chicago、VSP、shadcn 等。隨著時間的推移,我們希望透過用更多有用的構建塊來擴充 Flutter 的核心 Widget,從而簡化這項任務。
我們沒有做什麼
pub.dev 上的 material_ui 和 cupertino_ui 套件將繼續受到 Flutter 團隊本身的相同關注,並且自 2026 年 8 月 13 日起,開放給所有 Flutter 開發人員貢獻。雖然 Flutter 團隊的資源有限,我們偶爾必須做出艱難的選擇並降低某些計畫的優先順序;但這不是那回事。Flutter 團隊仍然致力於為 Material 和 Cupertino 提供出色的產品,讓您的 Flutter 應用程式在您所針對的所有平台上看起來現代且符合慣例。
展望未來
所有能夠存活到第十二年的專案都會有技術債。目標不是完全避免這些債務,而是識別它們並撥出時間和精力來償還它們。對於 Flutter 團隊來說,解決上述問題一直是我們願望清單上的項目,我們很高興最終能為所有開發人員提供更流暢的升級、更快的創新和更強大的核心 Widget 函式庫。
若要開始使用,如果您的應用程式使用 flutter/material.dart 或 flutter/cupertino.dart,請使用 dart fix 將新的獨立函式庫以 1.0.0 版本新增到您的 pubspec.yaml 檔案中,並替換您的導入以使用新的套件。我們的預期是這將是一個直接的變更,但如果您遇到任何問題,請 提交議題。
如果您是具有 Material 或 Cupertino 專業知識的 UI 開發人員,請考慮為獨立函式庫做出貢獻!一如既往,我們建議您要嘛尋找一個您感興趣的議題,要嘛為您想完成的工作提交一個功能請求。
下次再見,祝您 Fluttering 愉快!
- 為了簡化您的遷移,我們特意選擇了版本
1.0.0來標記獨立版本,該版本完美匹配每個函式庫在框架中的狀態。未來,這些函式庫將使用語義版本控制進行演進。 ↩