我想为用户提供一个选项,可以模糊包含敏感信息的某些文本字段,以防他们想分享我的应用程序的屏幕截图,而不向其他人显示这些信息。
从本质上讲,我在寻找一个相当于这样的效果:https://www.w3docs.com/tools/code-editor/5596
(You我可以将上面片段中的模糊增加到10px
,这样你就可以看到我想要的了)
为了在Flutter中实现这一点,我将Text
小部件嵌套在ImageFiltered
小部件中,并有条件地对其应用ImageFilter.blur()
效果。到目前为止还不错。
不过……效果看起来并不完全对:
正如你在截图中看到的,模糊效果似乎在边缘被剪切,使它看起来很丑。
我尝试过的事情:
- 在
tileMode
参数中使用所有可能的TileMode
值 - 在周围添加(大量)填充
- 把它放进一个大容器里
- 减少文本的大小
但无论我做什么,如果模糊效果的sigmaX
和sigmaY
值足够高(我需要确保你看不出数字),那么模糊似乎会“溢出”到“分配”给文本小部件的空间之外。扑翼会把它夹下来
我做错什么了吗?有没有人能想出一个变通办法,使模糊效果看起来专业,而不是修剪周围的边缘?
下面是我的代码的最小版本,您可以给予它:
return ImageFiltered(
imageFilter: ImageFilter.blur(
tileMode: TileMode.clamp,
sigmaX: 10,
sigmaY: 10),
child: Text(
"Sample Text",
style: TextStyle(fontSize: 30)
),
);
1条答案
按热度按时间ktca8awb1#
这有帮助吗?
如果只对文本应用图像模糊,模糊效果将仅限于文本区域。然而,当使用ClipRRect与剪切它与文本字段为例,虽然我使用容器作为例子来展示,模糊效果往往会超出预期的边界的文本。
但如果你使用的是文本字段,最好将模糊和文本字段分开