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 新版本可能会有影响贡献测试的更改。此类更改不一定伴随迁移指南。