概述

#

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