Flutter 團隊努力在 API 穩定性需求與不斷發展 API 以修復錯誤、改進 API 人體工程學以及以一致方式提供新功能的需求之間取得平衡。

為此,我們建立了一個測試登錄檔,您可以在其中為自己的應用程式或庫提供單元測試,我們會在每次更改時執行這些測試,以幫助我們跟蹤可能破壞現有應用程式的更改。我們的承諾是,除非與這些測試的開發者合作,否則我們不會進行任何會破壞這些測試的更改,以 (a) 確定更改是否有足夠的價值,以及 (b) 為程式碼提供修復,使測試繼續透過。

如果您想作為此計劃的一部分提供測試,請提交 PR 到 flutter/tests 儲存庫。該儲存庫上的 README 詳細描述了此過程。

公告和遷移指南

#

如果我們確實進行了破壞性更改(定義為導致一個或多個提交的測試需要更改的更改),我們將在我們的 flutter-announce 郵件列表以及我們的釋出說明中宣佈該更改。

我們提供了一份受破壞性更改影響的 程式碼遷移指南 列表。

棄用政策

#

我們偶爾會棄用某些 API,而不是一夜之間直接破壞它們。這獨立於我們的相容性政策,後者完全基於提交的測試是否失敗,如上所述。

Flutter 團隊不會定期刪除已棄用的 API。如果團隊刪除已棄用的 API,它將遵循與破壞性更改相同的程式。

Dart 和 Flutter 使用的其他庫

#

Dart 語言本身有 單獨的破壞性更改政策,並在 Dart announce 上釋出公告。

一般來說,Flutter 團隊目前對其他依賴項的破壞性更改沒有任何承諾。例如,使用新版本 Skia(Flutter 上某些平臺使用的圖形引擎)或 Harfbuzz(Flutter 使用的字型整形引擎)的 Flutter 新版本可能會有影響貢獻測試的更改。此類更改不一定伴隨遷移指南。