Skip to main content

v3.16 后移除的已弃用 API

摘要

#

根据 Flutter 的弃用策略,3.16 稳定版发布后已达到生命周期结束的已弃用 API 已被移除。

所有受影响的 API 都已编译到此主要来源中,以帮助迁移。为了进一步帮助您的迁移,请查看此快速参考表

变更

#

本节按包和受影响的类列出弃用项。

Button styleFrom 属性

#

包:flutter Flutter Fix 支持:是

TextButtonElevatedButtonOutlinedButton 小部件都具有一个静态 styleFrom 方法,用于生成 ButtonStyle。v3.1 中弃用了每个类的此方法的以下颜色属性:

  • TextButton.styleFrom
    • primary
    • onSurface
  • ElevatedButton.styleFrom
    • primary
    • onPrimary
    • onSurface
  • OutlinedButton.styleFrom
    • primary
    • onSurface

这些更改使 API 更好地与更新的 Material Design 规范对齐。通过将这些属性替换为 backgroundColorforegroundColordisabledForegroundColor,这些更改还更清晰地说明了颜色将如何应用于按钮。

迁移指南

迁移前的代码:

dart
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,
);

迁移后的代码:

dart
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 中弃用了 ThemeDataselectedRowColor 属性。

框架不再使用此属性,因为使用它的 widget 已迁移到其他组件主题,或者在更新的 Material Design 规范中不再需要它。

迁移指南

迁移前的代码:

dart
ThemeData(
  // ...
  selectedRowColor: Colors.pink, // 将不起作用。
);

迁移后的代码:

dart
ThemeData(
  // ...
  // 移除使用。
);

参考

API 文档:

相关的 PR:


#

包:flutter Flutter Fix 支持:是

v3.1 中弃用了 NavigatorStatefocusScopeNode 属性。

进行此更改是为了解决由 Navigator 引入的 FocusScopeNode 引起的一些问题。相反,FocusScope 被移动到在 WidgetsApp 中包围最顶层的 NavigatorNavigatorState 已更改为包含其自己的 FocusNode,从中可以参考其 FocusNode.enclosingScope 以访问正确的 FocusScopeNode

迁移指南

迁移前的代码:

dart
Navigator.of(context).focusScopeNode;

迁移后的代码:

dart
Navigator.of(context).focusNode.enclosingScope!;

参考

API 文档:

相关的 PR:


PlatformMenuBar.body

#

包:flutter Flutter Fix 支持:是

v3.1 中弃用了 PlatformMenuBarbody 属性。

进行此更改是为了使 PlatformMenuBar 与框架中的其他 widget 对齐,将其重命名为 child

迁移指南

迁移前的代码:

dart
PlatformMenuBar(
  body: myWidget,
);

迁移后的代码:

dart
PlatformMenuBar(
  child: myWidget,
);

参考

API 文档:

相关的 PR:


先前宣布的 TextThemeWidgetInspectorServiceWidgetInspectorServiceExtensions 的弃用在此周期中未被移除。WidgetInspectorServiceWidgetInspectorServiceExtensionssetPubRootDirectories 的弃用已延长一年,以允许 IDE 和其他客户进行迁移。预计 TextTheme 的弃用将在下一个周期中移除,届时将再次宣布。


时间线

#

稳定版:3.19.0