v3.16 后移除的已弃用 API
摘要
#根据 Flutter 的弃用策略,3.16 稳定版发布后已达到生命周期结束的已弃用 API 已被移除。
所有受影响的 API 都已编译到此主要来源中,以帮助迁移。为了进一步帮助您的迁移,请查看此快速参考表。
变更
#本节按包和受影响的类列出弃用项。
Button styleFrom 属性
#包:flutter Flutter Fix 支持:是
TextButton、ElevatedButton 和 OutlinedButton 小部件都具有一个静态 styleFrom 方法,用于生成 ButtonStyle。v3.1 中弃用了每个类的此方法的以下颜色属性:
TextButton.styleFromprimaryonSurface
ElevatedButton.styleFromprimaryonPrimaryonSurface
OutlinedButton.styleFromprimaryonSurface
这些更改使 API 更好地与更新的 Material Design 规范对齐。通过将这些属性替换为 backgroundColor、foregroundColor 和 disabledForegroundColor,这些更改还更清晰地说明了颜色将如何应用于按钮。
迁移指南
迁移前的代码:
TextButton.styleFrom(
primary: Colors.red,
onSurface: Colors.black,
);
ElevatedButton.styleFrom(
primary: Colors.red,
onPrimary: Colors.blue,
onSurface: Colors.black,
);
OutlinedButton.styleFrom(
primary: Colors.red,
onSurface: Colors.black,
);迁移后的代码:
TextButton.styleFrom(
foregroundColor: Colors.red,
disabledForegroundColor: Colors.black,
);
ElevatedButton.styleFrom(
backgroundColor: Colors.red,
foregroundColor: Colors.blue,
disabledForegroundColor: Colors.black,
);
OutlinedButton.styleFrom(
foregroundColor: Colors.red,
disabledForegroundColor: Colors.black,
);参考
API 文档:
相关的 PR:
ThemeData.selectedRowColor
#包:flutter Flutter Fix 支持:是
v3.1 中弃用了 ThemeData 的 selectedRowColor 属性。
框架不再使用此属性,因为使用它的 widget 已迁移到其他组件主题,或者在更新的 Material Design 规范中不再需要它。
迁移指南
迁移前的代码:
ThemeData(
// ...
selectedRowColor: Colors.pink, // 将不起作用。
);迁移后的代码:
ThemeData(
// ...
// 移除使用。
);参考
API 文档:
相关的 PR:
NavigatorState.focusScopeNode
#包:flutter Flutter Fix 支持:是
v3.1 中弃用了 NavigatorState 的 focusScopeNode 属性。
进行此更改是为了解决由 Navigator 引入的 FocusScopeNode 引起的一些问题。相反,FocusScope 被移动到在 WidgetsApp 中包围最顶层的 Navigator。NavigatorState 已更改为包含其自己的 FocusNode,从中可以参考其 FocusNode.enclosingScope 以访问正确的 FocusScopeNode。
迁移指南
迁移前的代码:
Navigator.of(context).focusScopeNode;迁移后的代码:
Navigator.of(context).focusNode.enclosingScope!;参考
API 文档:
相关的 PR:
PlatformMenuBar.body
#包:flutter Flutter Fix 支持:是
v3.1 中弃用了 PlatformMenuBar 的 body 属性。
进行此更改是为了使 PlatformMenuBar 与框架中的其他 widget 对齐,将其重命名为 child。
迁移指南
迁移前的代码:
PlatformMenuBar(
body: myWidget,
);迁移后的代码:
PlatformMenuBar(
child: myWidget,
);参考
API 文档:
相关的 PR:
先前宣布的 TextTheme、WidgetInspectorService 和 WidgetInspectorServiceExtensions 的弃用在此周期中未被移除。WidgetInspectorService 和 WidgetInspectorServiceExtensions 对 setPubRootDirectories 的弃用已延长一年,以允许 IDE 和其他客户进行迁移。预计 TextTheme 的弃用将在下一个周期中移除,届时将再次宣布。
时间线
#稳定版:3.19.0
除非另有说明,否则本网站上的文档反映的是 Flutter 的最新稳定版本。页面最后更新于 2025-01-30。 查看源代码 或 报告问题。