概述

#

ui.ImageFilter.blur 的默认平铺模式现在由后端自动选择。以前,除非指定了不同的平铺模式,否则会使用 TileMode.clamp。现在,默认值为 null,表示自动选择,除非指定了特定的平铺模式。

背景

#

ImageFilter.blur平铺模式指定了应用于滤镜的边缘像素会发生什么。有四种选项:

  • TileMode.clamp(以前的默认值)
  • Tilemode.repeated
  • TileMode.mirror
  • TileMode.decal

以前,如果未指定行为,ImageFilter 默认使用 clamp 模式。这有时会令开发者感到意外,因为它并不总是符合预期。

在此更改之后,滤镜会根据上下文自动选择以下平铺模式:

  • 当使用 save layers 或应用于单个形状绘制(例如使用 drawRectdrawPath)时,使用 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