Deprecated API removed after v3.19
- Summary
-
Changes
- TextTheme
- ThemeData
- CupertinoContextMenu.previewBuilder
- Scrollbar.showTrackOnHover
- KeepAliveHandle.release method
- InteractiveViewer.alignPanAxis
- MediaQuery.boldTextOverride
- Renamed builder typedefs for AnimatedList
- FlutterDriver.enableAccessibility
- TimelineSummary.writeSummaryToFile
- Android Platform Views on API 22 and below
- Timeline
Summary
#In accordance with Flutter's Deprecation Policy, deprecated APIs that reached end of life after the 3.19 stable release have been removed.
All affected APIs have been compiled into this primary source to aid in migration. To further aid your migration, check out this quick reference sheet.
Changes
#This section lists the deprecations by the package and affected class.
TextTheme
#Package: flutter Supported by Flutter Fix: yes
Several TextStyle
properties of TextTheme
were deprecated in v3.1 to support new
stylings from the Material Design specification. They
are listed in the following table alongside the appropriate replacement in the
new API.
Deprecation | New API |
---|---|
headline1 | displayLarge |
headline2 | displayMedium |
headline3 | displaySmall |
headline4 | headlineMedium |
headline5 | headlineSmall |
headline6 | titleLarge |
subtitle1 | titleMedium |
subtitle2 | titleSmall |
bodyText1 | bodyLarge |
bodyText2 | bodyMedium |
caption | bodySmall |
button | labelLarge |
overline | labelSmall |
Migration guide
Code before migration:
// TextTheme
// Base constructor
TextTheme(
headline1: headline1Style,
headline2: headline2Style,
headline3: headline3Style,
headline4: headline4Style,
headline5: headline5Style,
headline6: headline6Style,
subtitle1: subtitle1Style,
subtitle2: subtitle2Style,
bodyText1: bodyText1Style,
bodyText2: bodyText2Style,
caption: captionStyle,
button: buttonStyle,
overline: overlineStyle,
);
// copyWith
TextTheme.copyWith(
headline1: headline1Style,
headline2: headline2Style,
headline3: headline3Style,
headline4: headline4Style,
headline5: headline5Style,
headline6: headline6Style,
subtitle1: subtitle1Style,
subtitle2: subtitle2Style,
bodyText1: bodyText1Style,
bodyText2: bodyText2Style,
caption: captionStyle,
button: buttonStyle,
overline: overlineStyle,
);
// Getters
TextStyle style;
style = textTheme.headline1,
style = textTheme.headline2,
style = textTheme.headline3,
style = textTheme.headline4,
style = textTheme.headline5,
style = textTheme.headline6,
style = textTheme.subtitle1,
style = textTheme.subtitle2,
style = textTheme.bodyText1,
style = textTheme.bodyText2,
style = textTheme.caption,
style = textTheme.button,
style = textTheme.overline,
Code after migration:
// TextTheme
// Base constructor
TextTheme(
displayLarge: headline1Style,
displayMedium: headline2Style,
displaySmall: headline3Style,
headlineMedium: headline4Style,
headlineSmall: headline5Style,
titleLarge: headline6Style,
titleMedium: subtitle1Style,
titleSmall: subtitle2Style,
bodyLarge: bodyText1Style,
bodyMedium: bodyText2Style,
bodySmall: captionStyle,
labelLarge: buttonStyle,
labelSmall: overlineStyle,
);
TextTheme.copyWith(
displayLarge: headline1Style,
displayMedium: headline2Style,
displaySmall: headline3Style,
headlineMedium: headline4Style,
headlineSmall: headline5Style,
titleLarge: headline6Style,
titleMedium: subtitle1Style,
titleSmall: subtitle2Style,
bodyLarge: bodyText1Style,
bodyMedium: bodyText2Style,
bodySmall: captionStyle,
labelLarge: buttonStyle,
labelSmall: overlineStyle,
);
TextStyle style;
style = textTheme.displayLarge;
style = textTheme.displayMedium;
style = textTheme.displaySmall;
style = textTheme.headlineMedium;
style = textTheme.headlineSmall;
style = textTheme.titleLarge;
style = textTheme.titleMedium;
style = textTheme.titleSmall;
style = textTheme.bodyLarge;
style = textTheme.bodyMedium;
style = textTheme.bodySmall;
style = textTheme.labelLarge;
style = textTheme.labelSmall;
References
API documentation:
- [
TextTheme
][]
Relevant PRs:
ThemeData
#Package: flutter Supported by Flutter Fix: yes
Several Color
properties of ThemeData
were deprecated in v3.3 to support new stylings
from the Material Design specification. These colors were errorColor
, backgroundColor
,
bottomAppBarColor
, and toggleableActiveColor
. The first two are replaced by
properties of the ThemeData.colorScheme
, while bottomAppBarColor
is replaced by the
color of the component theme, BottomAppBarTheme
. The toggleableActiveColor
was no
longer used by the framework and was removed.
Migration guide
Code before migration:
var myTheme = ThemeData(
//...
errorColor: Colors.red,
backgroundColor: Colors.blue,
bottomAppBarColor: Colors.purple,
toggleableActiveColor: Colors.orange,
//...
);
var errorColor = myTheme.errorColor;
var backgroundColor = myTheme.backgroundColor;
var bottomAppBarColor = myTheme.bottomAppBarColor;
var toggleableActiveColor = myTheme.toggleableActiveColor;
Code after migration:
var myTheme = ThemeData(
//...
colorScheme: ColorScheme(
/// ...
error: Colors.red,
background: Colors.blue,
),
bottomAppBarTheme: BottomAppBarTheme(
color: Colors.purple,
),
//...
);
var errorColor = myTheme.colorScheme.error;
var backgroundColor = myTheme.colorScheme.background;
var bottomAppBarColor = myTheme.bottomAppBarTheme.color;
var toggleableActiveColor = Colors.orange;
References
API documentation:
Relevant PRs:
CupertinoContextMenu.previewBuilder
#Package: flutter Supported by Flutter Fix: yes
The previewBuilder
was replaced by the builder
of CupertinoContextMenu
after
v3.4. By adding builder
, the entirety of the animation executed by the context
menu is covered, the second half of which was performed by previewBuilder
, and
delineated by CupertinoContextMenu.animationOpensAt
.
Migration guide
Code before migration:
CupertinoContextMenu(
previewBuilder: (BuildContext context, Animation<double> animation, Widget child) {
return FittedBox(
fit: BoxFit.cover,
child: ClipRRect(
borderRadius: BorderRadius.circular(64.0 * animation.value),
child: Image.asset('assets/photo.jpg'),
),
);
},
actions: <Widget>[
CupertinoContextMenuAction(
child: const Text('Action one'),
onPressed: () {},
),
],
child: FittedBox(
fit: BoxFit.cover,
child: Image.asset('assets/photo.jpg'),
),
);
Code after migration:
CupertinoContextMenu(
actions: <Widget>[
CupertinoContextMenuAction(
child: const Text('Action one'),
onPressed: () {},
),
],
builder: (BuildContext context, Animation<double> animation) {
final Animation<BorderRadius?> borderRadiusAnimation = BorderRadiusTween(
begin: BorderRadius.circular(0.0),
end: BorderRadius.circular(CupertinoContextMenu.kOpenBorderRadius),
).animate(
CurvedAnimation(
parent: animation,
curve: Interval(
CupertinoContextMenu.animationOpensAt,
1.0,
),
),
);
final Animation<Decoration> boxDecorationAnimation = DecorationTween(
begin: const BoxDecoration(
color: Color(0xFFFFFFFF),
boxShadow: <BoxShadow>[],
),
end: BoxDecoration(
color: Color(0xFFFFFFFF),
boxShadow: CupertinoContextMenu.kEndBoxShadow,
),
).animate(
CurvedAnimation(
parent: animation,
curve: Interval(
0.0,
CupertinoContextMenu.animationOpensAt,
)
)
);
return Container(
decoration: animation.value < CupertinoContextMenu.animationOpensAt
? boxDecorationAnimation.value
: null,
child: FittedBox(
fit: BoxFit.cover,
child: ClipRRect(
borderRadius: borderRadiusAnimation.value ?? BorderRadius.circular(0.0),
child: SizedBox(
height: 150,
width: 150,
child: Image.asset('assets/photo.jpg'),
),
),
)
);
}
)
References
API documentation:
Relevant PRs:
Scrollbar.showTrackOnHover
#Package: flutter Supported by Flutter Fix: yes
The showTrackOnHover
property of Scrollbar
, and its associated component theme,
ScrollbarThemeData.showTrackOnHover
, were replaced by the stateful property
ScrollbarThemeData.trackVisibility
after v3.4. By utilizing trackVisibility
,
all permutations of state can factor into revealing the scrollbar track, not
just hover.
Migration guide
Code before migration:
Scrollbar(
showTrackOnHover: true,
child: //...
);
ScrollbarThemeData(
showTrackOnHover: true,
);
Code after migration:
Scrollbar(
child: //...
);
ScrollbarThemeData(
// This will always show the track for any state.
trackVisibility: MaterialStateProperty<bool>.all(true),
);
// Or
ScrollbarThemeData(
// Only show on hover.
trackVisibility: (Set<MaterialState> states) => states.contains(MaterialState.hovered),
);
References
API documentation:
Relevant PRs:
KeepAliveHandle.release
method
#Package: flutter Supported by Flutter Fix: no
The release
method of KeepAliveHandle
was removed and replaced by calling
dispose
after v3.3. This change was made because release
was found to often
be called without then calling dispose
, leading to memory leaks. The dispose
method executes the same functionality as release
did now.
Migration guide
Code before migration:
KeepAliveHandle handle = KeepAliveHandle();
handle.release();
handle.dispose();
Code after migration:
KeepAliveHandle handle = KeepAliveHandle();
handle.dispose();
References
API documentation:
Relevant PRs:
InteractiveViewer.alignPanAxis
#Package: flutter Supported by Flutter Fix: yes
The alignPanAxis
property of InteractiveViewer
was removed and replaced with
panAxis
after v3.3. This change was made to enable more modes of panning in
InteractiveViewer
.
Migration guide
Code before migration:
InteractiveViewer(
alignPanAxis: true,
);
Code after migration:
InteractiveViewer(
panAxis: PanAxis.aligned,
);
References
API documentation:
Relevant PRs:
MediaQuery.boldTextOverride
#Package: flutter Supported by Flutter Fix: yes
The boldTextOverride
method of MediaQuery
was removed and replaced with
boldTextOf
after v3.5. This change was made as part of larger refactor of
MediaQuery
, most notably reducing the number of rebuilds that would be
triggered by widgets that depend on it.
Migration guide
Code before migration:
MediaQuery.boldTextOverride(context);
Code after migration:
MediaQuery.boldTextOf(context)
References
API documentation:
Relevant PRs:
Renamed builder typedefs for AnimatedList
#Package: flutter Supported by Flutter Fix: no
With the addition of AnimatedGrid
, AnimatedList
was refactored to share a common base
class. The previously named AnimatedListItemBuilder
and AnimatedListRemovedItemBuilder
were renamed to better reflect the classes they could be used with after v3.5.
Rename any references to AnimatedItemBuilder
and AnimatedRemovedItemBuilder
.
References
API documentation:
Relevant PRs:
FlutterDriver.enableAccessibility
#Package: flutter_driver Supported by Flutter Fix: yes
The enableAccessibility
method of flutterDriver
was deprecated in v2.3. It
was removed and replaced with setSemantics
. This change made is possible to
enable or disable accessibility, rather than only enable it.
Migration guide
Code before migration:
FlutterDriver driver = FlutterDriver.connectedTo(
// ...
);
driver.enableAccessibility();
Code after migration:
FlutterDriver driver = FlutterDriver.connectedTo(
// ...
);
driver.setSemantics(true);
References
API documentation:
Relevant PRs:
TimelineSummary.writeSummaryToFile
#Package: flutter_driver Supported by Flutter Fix: yes
The writeSummaryToFile
method of TimelineSummary
was deprecated in v2.1. It
was removed and replaced with writeTimelineToFile
.
Migration guide
Code before migration:
TimelineSummary summary = TimelineSummary.summarize(
myTimeline,
);
summary.writeSummaryToFile(
traceName,
pretty: true,
);
Code after migration:
TimelineSummary summary = TimelineSummary.summarize(
myTimeline,
);
summary.writeTimelineToFile(
traceName,
pretty: true,
);
References
API documentation:
Relevant PRs:
Android Platform Views on API 22 and below
#Supported by Flutter Fix: no
As of Flutter 3.0 platform views require api 23 or higher. In Flutter 3.19 we now throw UnsupportedOperationException when using platform views on android devices runing api level 22 and below.
Migration guide
Set minimum api level to 23 (or higher) or check the android api level before displaying a platform view.
The previously announced deprecations for context menus, relating to ToolbarOptions
as well as parts of TextSelectionController
and SelectableRegionState
were not
removed this cycle, to allow more time for migration.
Expect these deprecations to be removed in the next cycle, which will
be announced again when the time comes.
Timeline
#除非另有说明,本文档之所提及适用于 Flutter 的最新稳定版本,本页面最后更新时间: 2024-09-04。 查看文档源码 或者 为本页面内容提出建议。