Flutter ListTile 飞溅/波纹效果与边框不匹配

Posted

技术标签:

【中文标题】Flutter ListTile 飞溅/波纹效果与边框不匹配【英文标题】:Flutter ListTile splash/ripple effect not matching border 【发布时间】:2020-05-19 07:29:25 【问题描述】:

我有一个 ListTile 在颤动,但我似乎无法弄清楚如何使飞溅/波纹效果适合边框。我的边框是圆形的,但飞溅只是一个没有圆形边框的普通矩形,如下图所示。

ListTile

下面是 ListTile 的代码。

Ink(
    decoration: BoxDecoration(
      borderRadius: BorderRadius.all(Radius.circular(borderRadius)),
    ),
    child: ListTile(
      title: text(title, 0.0),
      leading: Icon(
        icon,
        color: primaryColor,
      ),
    )
)

【问题讨论】:

尝试将您的 listtile 包裹在卡片中,并从 Ink 中移除装饰属性,并改为为您的卡片设置样式 【参考方案1】:

InkInkWellClipRRect 包围,其边界半径值等于 BorderRadius.all(Radius.circular(borderRadius))

更好的是,将Ink 替换为InkWell 并设置不需要剪辑的borderRadius: BorderRadius.all(Radius.circular(borderRadius))

这样你就可以写

InkWell(
    borderRadius: BorderRadius.circular(borderRadius),
    onTap: () ,
    splashColor: Colors.red,
    child: ListTile(
        title: Text("Title"),
    ),
),

【讨论】:

【参考方案2】:

您可以使用 InkWell:

InkWell(
    customBorder: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(10),
    ),
    onTap: () ,
    splashColor: Colors.red,
    child: ListTile(
        title: Text("Title"),
    ),
),

【讨论】:

我只能说:它与 customBorder 配合得非常好

以上是关于Flutter ListTile 飞溅/波纹效果与边框不匹配的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中设置按钮飞溅效果的边界?

Flutter中如何避免Backdrop的模糊效果和TabBar的飞溅效果冲突?

如何在 Flutter 中指定 ListTile 高度

InkWell 在 Flutter 中的 GridTile 中的图像顶部产生波纹

Flutter 飞溅闪烁问题

圆形图标弹出菜单的正确波纹效果形状