Deprecated API removed after v3.7
Summary
#In accordance with Flutter's Deprecation Policy, deprecated APIs that reached end of life after the 3.7 stable release have been removed.
All affected APIs have been compiled into this primary source to aid in migration. A quick reference sheet is available as well.
Changes
#This section lists the deprecations, listed by the affected class.
GestureRecognizer.kind & subclasses
#Supported by Flutter Fix: yes
GestureRecognizer.kind was deprecated in v2.3.
Use GestureRecognizer.supportedDevices instead.
This same change affects all subclasses of GestureRecognizer:
EagerGestureRecognizerForcePressGestureRecognizerLongPressGestureRecognizerDragGestureRecognizerVerticalDragGestureRecognizerHorizontalDragGestureRecognizerMultiDragGestureRecognizerImmediateMultiDragGestureRecognizerHorizontalMultiDragGestureRecognizerVerticalMultiDragGestureRecognizerDelayedMultiDragGestureRecognizerDoubleTapGestureRecognizerMultiTapGestureRecognizerOneSequenceGestureRecognizerPrimaryPointerGestureRecognizerScaleGestureRecognizer
This change allowed for multiple devices to be recognized for a gesture, rather
than the single option kind provided.
Migration guide
Code before migration:
var myRecognizer = GestureRecognizer(
kind: PointerDeviceKind.mouse,
);Code after migration:
var myRecognizer = GestureRecognizer(
supportedDevices: <PointerDeviceKind>[ PointerDeviceKind.mouse ],
);References
API documentation:
GestureRecognizerEagerGestureRecognizerForcePressGestureRecognizerLongPressGestureRecognizerDragGestureRecognizerVerticalDragGestureRecognizerHorizontalDragGestureRecognizerMultiDragGestureRecognizerImmediateMultiDragGestureRecognizerHorizontalMultiDragGestureRecognizerVerticalMultiDragGestureRecognizerDelayedMultiDragGestureRecognizerDoubleTapGestureRecognizerMultiTapGestureRecognizerOneSequenceGestureRecognizerPrimaryPointerGestureRecognizerScaleGestureRecognizer
Relevant PRs:
ThemeData accentColor, accentColorBrightness, accentColorTextTheme, accentColorIconTheme, and buttonColor
#Supported by Flutter Fix: yes
The accentColor, accentColorBrightness, accentColorTextTheme,
accentColorIconTheme, and buttonColor properties of ThemeData were
deprecated in v2.3.
This change better aligned ThemeData with Material Design guidelines. It also
created more clarity in theming by relying either on the core color scheme or
individual component themes for desired styling.
The accentColorBrightness, accentColorTextTheme,
accentColorIconTheme, and buttonColor are no longer used by the framework.
References should be removed.
Uses of ThemeData.accentColor should be replaced with
ThemeData.colorScheme.secondary.
Migration guide
#Code before migration:
var myTheme = ThemeData(
//...
accentColor: Colors.blue,
//...
);
var color = myTheme.accentColor;Code after migration:
var myTheme = ThemeData(
//...
colorScheme: ColorScheme(
//...
secondary:Colors.blue,
//...
),
//...
);
var color = myTheme.colorScheme.secondary;References
API documentation:
Relevant issues:
Relevant PRs:
Deprecated in:
Removed in:
AppBar, SliverAppBar, and AppBarTheme updates
#Supported by Flutter Fix: yes
In v2.4, several changes were made ot the app bar classes and their themes to better align with Material Design. Several properties were deprecated at that time and have been removed.
For AppBar, SliverAppBar and AppBarTheme:
brightnesshas been removed, and is replaced bysystemOverlayStyletextThemehas been removed, and is replaced by eithertoolbarTextStyleortitleTextStyle.backwardsCompatibilitycan be removed, as it was a temporary migration flag for these properties.
Additionally, AppBarTheme.color was removed, with AppBarTheme.backgroundColor
as its replacement.
Migration guide
Code before migration:
var toolbarTextStyle = TextStyle(...);
var titleTextStyle = TextStyle(...);
AppBar(
brightness: Brightness.light,
textTheme: TextTheme(
bodyMedium: toolbarTextStyle,
titleLarge: titleTextStyle,
)
backwardsCompatibility: true,
);
AppBarTheme(color: Colors.blue);Code after migration:
var toolbarTextStyle = TextStyle(...);
var titleTextStyle = TextStyle(...);
AppBar(
systemOverlayStyle: SystemOverlayStyle(statusBarBrightness: Brightness.light),
toolbarTextStyle: toolbarTextStyle,
titleTextStyle: titleTextStyle,
);
AppBarTheme(backgroundColor: Colors.blue);References
API documentation:
Relevant issues:
Deprecated in:
Removed in:
SystemChrome.setEnabledSystemUIOverlays
#Supported by Flutter Fix: yes
In v2.3, SystemChrome.setEnabledSystemUIOVerlays, the static method for
setting device system level overlays like status and navigation bars, was
deprecated in favor of SystemChrome.setEnabledSystemUIMode.
This change allowed for setting up common fullscreen modes that match native Android app designs like edge to edge.
Manually setting overlays, instead of choosing a specific mode, is still
supported through SystemUiMode.manual, allowing developers to pass the same
list of overlays as before.
Migration guide
Code before migration:
SystemChrome.setEnabledSystemUIOverlays(<SystemUiOverlay>[
SystemUiOverlay.top,
SystemUiOverlay.bottom,
]);Code after migration:
SystemChrome.setEnabledSystemUIMode(
SystemUiMode.manual,
overlays: <SystemUiOverlay>[
SystemUiOverlay.top,
SystemUiOverlay.bottom,
],
);References
API documentation:
Relevant issues:
Deprecated in:
Removed in:
SystemNavigator.routeUpdated
#Supported by Flutter Fix: yes
In v2.3, SystemNavigator.routeUpdated was deprecated in favor of
SystemNavigator.routeInformationUpdated.
Instead of having two ways to update the engine about the current route, the
change moved everything to one API, which separately selects the single-entry
history mode if a Navigator that reports routes is created.
Migration guide
Code before migration:
SystemNavigator.routeUpdated(routeName: 'foo', previousRouteName: 'bar');Code after migration:
SystemNavigator.routeInformationUpdated(location: 'foo');References
API documentation:
Relevant issues:
Deprecated in:
Removed in:
AnimatedSize.vsync
#Supported by Flutter Fix: yes
In v2.2, AnimatedSize.vsyc was deprecated. This property was no longer
necessary after AnimatedSize was converted to a StatefulWidget whose State
mixed in SingleTickerProviderStateMixin. The change was made to fix a memory
leak.
Uses of vsync should be removed, as AnimatedSize now handles this property.
Migration guide
Code before migration:
AnimatedSize(
vsync: this,
// ...
);Code after migration:
AnimatedSize(
// ...
);References
API documentation:
Deprecated in:
Removed in:
Timeline
#In stable release: 3.10
除非另有说明,本文档之所提及适用于 Flutter 的最新稳定版本,本页面最后更新时间: 2025-01-17。 查看文档源码 或者 为本页面内容提出建议.