跳至主要内容

v3.7 后已移除弃用的 API

摘要

#

根据 Flutter 的 弃用策略,在 3.7 稳定版发布后达到使用寿命终点的弃用 API 已被移除。

所有受影响的 API 都已编译到此主要源代码中,以帮助迁移。此外,还提供了一个 快速参考表

更改

#

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

GestureRecognizer.kind 及其子类

#

Flutter Fix 支持:是

GestureRecognizer.kind 在 v2.3 中已弃用。请改用 GestureRecognizer.supportedDevices

此更改会影响 GestureRecognizer 的所有子类。

  • EagerGestureRecognizer
  • ForcePressGestureRecognizer
  • LongPressGestureRecognizer
  • DragGestureRecognizer
  • VerticalDragGestureRecognizer
  • HorizontalDragGestureRecognizer
  • MultiDragGestureRecognizer
  • ImmediateMultiDragGestureRecognizer
  • HorizontalMultiDragGestureRecognizer
  • VerticalMultiDragGestureRecognizer
  • DelayedMultiDragGestureRecognizer
  • DoubleTapGestureRecognizer
  • MultiTapGestureRecognizer
  • OneSequenceGestureRecognizer
  • PrimaryPointerGestureRecognizer
  • ScaleGestureRecognizer

此更改允许识别多个设备的手势,而不是之前提供的单个选项 kind

迁移指南

迁移前的代码

dart
var myRecognizer = GestureRecognizer(
  kind: PointerDeviceKind.mouse,  
);

迁移后的代码

dart
var myRecognizer = GestureRecognizer(
  supportedDevices: <PointerDeviceKind>[ PointerDeviceKind.mouse ],
);

参考

API 文档

相关 PR


ThemeDataaccentColoraccentColorBrightnessaccentColorTextThemeaccentColorIconThemebuttonColor

#

Flutter Fix 支持:是

ThemeDataaccentColoraccentColorBrightnessaccentColorTextThemeaccentColorIconThemebuttonColor 属性在 v2.3 中已弃用。

此更改使 ThemeData 更好地符合 Material Design 指南。它还通过依赖核心颜色方案或各个组件主题来实现所需的样式,从而使主题更加清晰。

框架不再使用 accentColorBrightnessaccentColorTextThemeaccentColorIconThemebuttonColor。应移除相关引用。

ThemeData.accentColor 的使用应替换为 ThemeData.colorScheme.secondary

迁移指南

#

迁移前的代码

dart
var myTheme = ThemeData(
  //...
  accentColor: Colors.blue,
  //...
);
var color = myTheme.accentColor;

迁移后的代码

dart
var myTheme = ThemeData(
  //...
  colorScheme: ColorScheme(
    //...
    secondary:Colors.blue,
    //...
  ),
  //...
);
var color = myTheme.colorScheme.secondary;

参考

API 文档

相关问题

相关 PR

在以下版本中弃用

在以下版本中移除


AppBarSliverAppBarAppBarTheme 更新

#

Flutter Fix 支持:是

在 v2.4 中,对应用栏类及其主题进行了一些更改,以更好地符合 Material Design。当时弃用了一些属性,并且这些属性已被移除。

对于 AppBarSliverAppBarAppBarTheme

  • brightness 已移除,并由 systemOverlayStyle 替换。
  • textTheme 已移除,并由 toolbarTextStyletitleTextStyle 替换。
  • backwardsCompatibility 可以移除,因为它只是这些属性的临时迁移标志。

此外,AppBarTheme.color 已移除,并由 AppBarTheme.backgroundColor 替换。

迁移指南

迁移前的代码

dart
var toolbarTextStyle = TextStyle(...);
var titleTextStyle = TextStyle(...);
AppBar(
  brightness: Brightness.light,
  textTheme: TextTheme(
    bodyMedium: toolbarTextStyle,
    titleLarge: titleTextStyle,
  )
  backwardsCompatibility: true,
);
AppBarTheme(color: Colors.blue);

迁移后的代码

dart
var toolbarTextStyle = TextStyle(...);
var titleTextStyle = TextStyle(...);
AppBar(
  systemOverlayStyle: SystemOverlayStyle(statusBarBrightness: Brightness.light),
  toolbarTextStyle: toolbarTextStyle,
  titleTextStyle: titleTextStyle,
);
AppBarTheme(backgroundColor: Colors.blue);

参考

API 文档

相关问题

在以下版本中弃用

在以下版本中移除


SystemChrome.setEnabledSystemUIOverlays

#

Flutter Fix 支持:是

在 v2.3 中,SystemChrome.setEnabledSystemUIOVerlays(用于设置设备系统级叠加层(如状态栏和导航栏)的静态方法)已弃用,取而代之的是 SystemChrome.setEnabledSystemUIMode

此更改允许设置与原生 Android 应用设计(如边缘到边缘)相匹配的常用全屏模式。

仍然支持手动设置叠加层,而不是选择特定模式,开发人员可以通过 SystemUiMode.manual 传递与之前相同的叠加层列表。

迁移指南

迁移前的代码

dart
SystemChrome.setEnabledSystemUIOverlays(<SystemUiOverlay>[
  SystemUiOverlay.top,
  SystemUiOverlay.bottom,
]);

迁移后的代码

dart
SystemChrome.setEnabledSystemUIMode(
  SystemUiMode.manual,
  overlays: <SystemUiOverlay>[
    SystemUiOverlay.top,
    SystemUiOverlay.bottom,
  ],
);

参考

API 文档

相关问题

在以下版本中弃用

在以下版本中移除


SystemNavigator.routeUpdated

#

Flutter Fix 支持:是

在 v2.3 中,SystemNavigator.routeUpdated 已弃用,取而代之的是 SystemNavigator.routeInformationUpdated

此更改将所有内容移至一个 API,而不是使用两种方法来更新引擎关于当前路由的信息,如果创建了报告路由的 Navigator,则该 API 会单独选择单条目历史记录模式。

迁移指南

迁移前的代码

dart
SystemNavigator.routeUpdated(routeName: 'foo', previousRouteName: 'bar');

迁移后的代码

dart
SystemNavigator.routeInformationUpdated(location: 'foo');

参考

API 文档

相关问题

在以下版本中弃用

在以下版本中移除


AnimatedSize.vsync

#

Flutter Fix 支持:是

在 v2.2 中,AnimatedSize.vsyc 已弃用。在 AnimatedSize 转换为其 State 混合了 SingleTickerProviderStateMixinStatefulWidget 后,此属性不再需要。此更改是为了修复内存泄漏。

应移除 vsync 的使用,因为 AnimatedSize 现在处理此属性。

迁移指南

迁移前的代码

dart
AnimatedSize(
  vsync: this,
  // ...
);

迁移后的代码

dart
AnimatedSize(
  // ...
);

参考

API 文档

在以下版本中弃用

在以下版本中移除


时间线

#

稳定版本:3.10