v3.13 后移除的已弃用 API
摘要
#根据 Flutter 的弃用策略,在 3.13 稳定版本之后达到生命周期末端的已弃用 API 已被移除。
所有受影响的 API 都已编译到此主要资源中,以帮助迁移。 为了进一步帮助您的迁移,请查看此快速参考表。
变更
#本节按包和受影响的类列出了弃用内容。
Chip 类中的 useDeleteButtonTooltip
#包:flutter Flutter Fix 支持:是
以下类的 useDeleteButtonTooltip
属性在 v2.10 中已弃用:
DeletableChipAttributes
Chip
RawChip
InputChip
deleteButtonTooltipMessage
替换了 useDeleteButtonTooltip
。此更改简化了 API,因为为 deleteButtonTooltipMessage
提供空字符串可以达到将原始属性 useDeleteButtonTooltip
设置为 false 的相同效果。当 deleteButtonTooltipMessage
未设置时,默认情况下使用 MaterialLocalizations.deleteButtonTooltip
。
弃用 Chips 的 useDeleteButtonTooltip
(https://docs.google.com/document/d/1wc9ot7T2E7hJubYxEWMX230a79wYSiFey4BHxnEzHtw/edit?usp=sharing&resourcekey=0-Bo7KPqEtkWgZcSuRCqwQ5w) 设计文档更深入地介绍了此对芯片和工具提示的更新。要了解更多信息,请查看芯片和工具提示迁移指南。
迁移指南
迁移前的代码:
Chip(useDeleteButtonTooltip: false);
InputChip(useDeleteButtonTooltip: true);
RawChip rawChip = RawChip();
rawChip.useDeleteButtonTooltip;
迁移后的代码:
Chip(deleteButtonTooltipMessage: '');
InputChip();
RawChip rawChip = RawChip();
rawChip.deleteButtonTooltipMessage;
参考资料
API 文档:
相关的 PR:
MaterialButtonWithIconMixin
#包:flutter Flutter Fix 支持:否
MaterialButtonWithIconMixin
属性在 v2.11 中已弃用。
随着新的按钮类 TextButton
、OutlinedButton
和 ElevatedButton
的引入,此 mixin 不再使用。 之前的版本移除了使用此 mixin 的旧按钮类。 因此,此 mixin 不再影响可能混合其中的任何类。
迁移指南
迁移前的代码:
class MyButtonClass extends StatelessWidget with MaterialButtonWithIconMixin {
// ...
}
迁移后的代码:
class MyButtonClass extends StatelessWidget {
// ...
}
参考资料
相关的 PR:
PlatformsViewsService.synchronizeToNativeViewHierarchy
#包:flutter Flutter Fix 支持:否
PlatformsViewsService
的静态方法 synchronizeToNativeViewHierarchy
在 v2.11 中已弃用。
在弃用期间,该方法是一个无操作函数,因为它不再需要调用以提高性能。应移除对该方法的引用,并且不会影响应用程序。
迁移指南
迁移前的代码:
await PlatformsViewsService.synchronizeToNativeViewHierarchy(false);
迁移后的代码:
参考资料
API 文档:
相关的 PR:
TextSelectionOverlay.fadeDuration
#包:flutter Flutter Fix 支持:是
TextSelectionOverlay
的静态 fadeDuration
属性在 v2.12 中已弃用。
SelectionOverlay.fadeDuration
属性替换了 TextSelectionOverlay.fadeDuration
。 通过 TextSelectionOverlay
重构,添加了 SelectionOverlay
作为更通用的 widget,无需专门依赖于 RenderEditable
。
迁移指南
迁移前的代码:
TextSelectionOverlay.fadeDuration;
迁移后的代码:
SelectionOverlay.fadeDuration;
参考资料
API 文档:
相关的 PR:
androidOverscrollIndicator
#包:flutter Flutter Fix 支持:否
以下类的 androidOverscrollIndicator
属性在 v2.13 中已弃用:
ScrollBehavior
MaterialScrollBehavior
ThemeData
引入此标志是为了允许用户配置滚动 widget 以使用 GlowingOverscrollIndicator
或 StretchingOvercrollIndicator
。 它已被 ThemeData.useMaterial3
标志弃用,因为框架引入了对 Material 3 风格 widget 的更多支持。
由于 ThemeData.useMaterial3
默认情况下为 true
,因此默认情况下应用 StretchingOverscrollIndicator
。将其值设置为 false
将应用 GlowingOverscrollIndicator
。
或者,可以重写 ScrollBehavior
或 MaterialScrollBehavior
的 buildOverscrollIndicator
方法以进一步更改过度滚动指示器的外观。
迁移指南
迁移前的代码:
MaterialApp(
scrollBehavior: MaterialScrollBehavior(
androidOverscrollIndicator: AndroidOverscrollIndicator.glow,
),
//...
);
MaterialApp(
scrollBehavior: ScrollBehavior(
androidOverscrollIndicator: AndroidOverscrollIndicator.glow,
),
//...
);
MaterialApp(
theme: Theme.light().copyWith(
androidOverscrollIndicator: AndroidOverscrollIndicator.glow,
),
//...
);
迁移后的代码:
MaterialApp(
theme: Theme.light().copyWith(
// 默认值为 true 和 stretching indicator,
// false 结果为 glowing indicator
useMaterial3: false,
),
//...
);
参考资料
API 文档:
ScrollBehavior
MaterialScrollBehavior
ThemeData
GlowingOverscrollIndicator
StretchingOverscrollIndicator
相关的 PR:
ImageProvider 和 PaintingBinding 的更新
#包:flutter Flutter Fix 支持:否
PaintingBinding
的 instantiateImageCodec
方法以及 ImageProvider
的 load
方法和相关的 DecoderCallback
在 v2.13 中都已弃用。
相应的替换是:
已弃用的方法 | 当前方法 |
---|---|
PaintingBinding.instantiateImageCodec | PaintingBinding.instantiateImageCodecFromBuffer |
ImageProvider.load | ImageProvider.loadBuffer |
DecoderCallback | DecoderBufferCallback |
此更改通过使用缓冲区提高了图像加载速度。
迁移指南
迁移前的代码:
PaintingBinding.instance.instantiateImageCodec
迁移后的代码:
PaintingBinding.instance.instantiateImageCodecFromBuffer
参考资料
API 文档:
相关的 PR:
TestWindow 属性
#包:flutter_test Flutter Fix 支持:否
为了准备多窗口支持,许多已弃用的 TestWindow
属性已被移除。虽然 TestWindow
已被弃用,但目前不符合移除条件。现在迁移已过期的属性将有助于从 TestWindow
迁移。
已移除以下属性:
localeTestValue
clearLocaleTestValue
localesTestValue
clearLocalesTestValue
initialLifecycleStateTestValue
textScaleFactorTestValue
clearTextScaleFactorTestValue
platformBrightnessTestValue
clearPlatformBrightnessTestValue
alwaysUse24HourFormatTestValue
clearAlwaysUse24HourTestValue
brieflyShowPasswordTestValue
defaultRouteNameTestValue
clearDefaultRouteNameTestValue
semanticsEnabledTestValue
clearSemanticsEnabledTestValue
accessibilityFeaturesTestValue
clearAccessibilityFeaturesTestValue
要了解有关此TestWindow
更新的更多信息,请查看TestWindow
迁移指南。
迁移指南
迁移前的代码:
testWidgets('My test', (WidgetTester tester) aysnc {
// 对于所有实例,将 window 替换为 platformDispatcher
tester.binding.window.textScaleFactorTestValue = 42;
addTearDown(tester.binding.window.clearTextScaleFactorTestValue);
// ...
});
迁移后的代码:
testWidgets('My test', (WidgetTester tester) aysnc {
// 对于所有实例,将 window 替换为 platformDispatcher
tester.binding.platformDispatcher.textScaleFactorTestValue = 42;
addTearDown(tester.binding.platformDispatcher.clearTextScaleFactorTestValue);
// ...
});
参考资料
API 文档:
相关的 PR:
时间线
#稳定版本:3.16
除非另有说明,否则本网站上的文档反映的是 Flutter 的最新稳定版本。页面最后更新于 2025-01-30。 查看源代码 或 报告问题。