概述

#

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

背景

#

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

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

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

从本次更改开始,滤镜会根据上下文自动选择以下平铺模式:

  • 在使用保存图层以及应用于单个形状绘制(例如 drawRectdrawPath)时选择 decal
  • 在使用背景滤镜时选择 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