ImageFilter.blur 默认平铺模式自动选择。
概述
#ui.ImageFilter.blur
的默认平铺模式现在由后端自动选择。以前,除非指定了不同的平铺模式,否则会使用 TileMode.clamp
。现在,默认值为 null
,表示自动选择,除非指定了特定的平铺模式。
背景
#ImageFilter.blur
的平铺模式指定了应用于滤镜的边缘像素会发生什么。有四种选项:
TileMode.clamp
(以前的默认值)Tilemode.repeated
TileMode.mirror
TileMode.decal
以前,如果未指定行为,ImageFilter
默认使用 clamp
模式。这有时会令开发者感到意外,因为它并不总是符合预期。
在此更改之后,滤镜会根据上下文自动选择以下平铺模式:
- 当使用 save layers 或应用于单个形状绘制(例如使用
drawRect
和drawPath
)时,使用decal
。 - 当与 backdrop filters 一起使用时,使用
mirror
。 - 对于
drawImage
,使用clamp
。
迁移指南
#只有未明确指定平铺模式的模糊图像滤镜会受到此更改的影响。
我们认为新的默认值总体上更好,并建议移除任何指定的模糊平铺模式。
迁移前的代码
dart
final filter = ui.ImageFilter.blur(sigmaX: 4, sigmaY: 4, tileMode: TileMode.decal);
迁移后的代码
dart
final filter = ui.ImageFilter.blur(sigmaX: 4, sigmaY: 4);
时间线
#已在版本中发布: 3.28.0-0.1.pre
稳定版发布于: 3.29
参考资料
#API 文档
相关问题
相关 PR