Flutter 3.41 is live! Check out theFlutter 3.41 blog post!
Deprecated API removed after v3.7
After reaching end of life, the following deprecated APIs were removed from Flutter.
Summary
#In accordance with Flutter'sDeprecation 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. Aquick 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. UseGestureRecognizer.supportedDevices instead.
This same change affects all subclasses ofGestureRecognizer:
EagerGestureRecognizerForcePressGestureRecognizerLongPressGestureRecognizerDragGestureRecognizerVerticalDragGestureRecognizerHorizontalDragGestureRecognizerMultiDragGestureRecognizerImmediateMultiDragGestureRecognizerHorizontalMultiDragGestureRecognizerVerticalMultiDragGestureRecognizerDelayedMultiDragGestureRecognizerDoubleTapGestureRecognizerMultiTapGestureRecognizerOneSequenceGestureRecognizerPrimaryPointerGestureRecognizerScaleGestureRecognizer
This change allowed for multiple devices to be recognized for a gesture, rather than the single optionkind provided.
Migration guide
Code before migration:
varmyRecognizer=GestureRecognizer(kind:PointerDeviceKind.mouse,);Code after migration:
varmyRecognizer=GestureRecognizer(supportedDevices:<PointerDeviceKind>[PointerDeviceKind.mouse],);References
API documentation:
GestureRecognizerEagerGestureRecognizerForcePressGestureRecognizerLongPressGestureRecognizerDragGestureRecognizerVerticalDragGestureRecognizerHorizontalDragGestureRecognizerMultiDragGestureRecognizerImmediateMultiDragGestureRecognizerHorizontalMultiDragGestureRecognizerVerticalMultiDragGestureRecognizerDelayedMultiDragGestureRecognizerDoubleTapGestureRecognizerMultiTapGestureRecognizerOneSequenceGestureRecognizerPrimaryPointerGestureRecognizerScaleGestureRecognizer
Relevant PRs:
ThemeDataaccentColor,accentColorBrightness,accentColorTextTheme,accentColorIconTheme, andbuttonColor
#Supported by Flutter Fix: yes
TheaccentColor,accentColorBrightness,accentColorTextTheme,accentColorIconTheme, andbuttonColor properties ofThemeData were deprecated in v2.3.
This change better alignedThemeData 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.
TheaccentColorBrightness,accentColorTextTheme,accentColorIconTheme, andbuttonColor are no longer used by the framework. References should be removed.
Uses ofThemeData.accentColor should be replaced withThemeData.colorScheme.secondary.
Migration guide
#Code before migration:
varmyTheme=ThemeData(//...accentColor:Colors.blue,//...);varcolor=myTheme.accentColor;Code after migration:
varmyTheme=ThemeData(//...colorScheme:ColorScheme(//...secondary:Colors.blue,//...),//...);varcolor=myTheme.colorScheme.secondary;References
API documentation:
Relevant issues:
Relevant PRs:
Deprecated in:
Removed in:
AppBar,SliverAppBar, andAppBarTheme 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.
ForAppBar,SliverAppBar andAppBarTheme:
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, withAppBarTheme.backgroundColor as its replacement.
Migration guide
Code before migration:
vartoolbarTextStyle=TextStyle(...);vartitleTextStyle=TextStyle(...);AppBar(brightness:Brightness.light,textTheme:TextTheme(bodyMedium:toolbarTextStyle,titleLarge:titleTextStyle,)backwardsCompatibility:true,);AppBarTheme(color:Colors.blue);Code after migration:
vartoolbarTextStyle=TextStyle(...);vartitleTextStyle=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 ofSystemChrome.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 throughSystemUiMode.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 ofSystemNavigator.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 aNavigator 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 afterAnimatedSize was converted to aStatefulWidget whoseState mixed inSingleTickerProviderStateMixin. The change was made to fix a memory leak.
Uses ofvsync should be removed, asAnimatedSize 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
Unless stated otherwise, the documentation on this site reflects Flutter 3.38.6. Page last updated on 2025-10-30.View source orreport an issue.