Flutter 带按钮的列表平铺
我在leading属性中有ListTile和button。一切正常,但是,如果按下按钮,则也会激活“互动贴”手势。Tile onTap不会仅触发动画 这是密码Flutter 带按钮的列表平铺,flutter,dart,Flutter,Dart,我在leading属性中有ListTile和button。一切正常,但是,如果按下按钮,则也会激活“互动贴”手势。Tile onTap不会仅触发动画 这是密码 ListTile( contentPadding: EdgeInsets.zero, leading: IconButton( icon: Icon(Icons.check_circle), onPressed: () => print('select'), ), title: Te
ListTile(
contentPadding: EdgeInsets.zero,
leading: IconButton(
icon: Icon(Icons.check_circle),
onPressed: () => print('select'),
),
title: Text('TEST'),
trailing: Icon(
Icons.arrow_forward_ios,
),
onTap: () => print('on tap'),
)
任何关于如何从主导区域消除瓷砖onTap效果的想法。我想到的唯一方法是使用用手势检测器包装的瓷砖中的行,并摆脱onTap,但我希望有更好的解决方案,如果有,请尝试将图标按钮的spash、hover和HIGHT颜色设置为透明
IconButton(
highlightColor:
Colors.transparent,
splashColor: Colors.transparent,
hoverColor: Colors.transparent,
icon: Icon(Icons.check_circle),
onPressed: () =>
print('select'),
)
看,如果你不想在你的
前导上产生涟漪效应
,我想,手势检测器
会对你有所帮助但是您不必使用手势检测器制作整个列表,只有前导可以。
请在此处查看解决方案:
最终解决方案
ListTile(
contentPadding: EdgeInsets.zero,
leading: GestureDetector(
onTap: () => print('icon tapped'),
child: Icon(Icons.check_circle)
),
title: Text('TEST'),
trailing: Icon(
Icons.arrow_forward_ios,
),
onTap: () => print('on tap'),
)
现在,在上面的代码中,您可以看到前导
只有手势检测器
。除此之外,一切都是一样的,并将按预期工作
以下是结果=>
我希望这对你有帮助。让我知道。如果您有任何建议,我洗耳恭听:)快乐学习如果您想在前导按钮和标题区域上分离效果,另一个选择是只需将平面按钮放在平铺区域内,然后删除onTap。这几乎与您提到的手势检测器的解决方案相同,但至少您不必在手势检测器上使用效果。我认为没有其他选择
listile(
contentPadding:EdgeInsets.zero,
领先:IconButton(
图标:图标(图标。勾选圆圈),
按下时:()=>print('select'),
),
标题:扁平按钮(
填充:EdgeInsets.zero,
按下时:()=>打印(“点击时”),
孩子:排(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
文本(“测试”),
图标(图标。箭头\前进\ ios)
],
),
),
)
这将消除按钮效果。。我需要从tile-leading区域消除tile-onTap效果。我认为您对此无能为力,在列表tile
中没有任何属性可以消除onTap
效果。用手势检测器将其包裹起来
是一种消除按钮效果的方法,效果与坦率回答相同。我希望将这些效果分割为按钮的前导区域和tile onTap的其余平铺区域。嘿@delmin,我没有完全理解你的问题,当我阅读这一行时,我不知道如何从前导区域去除tile onTap效果。因此,我认为你只想从前导区域移除效果。不管怎样,希望你能从中有所收获。你已经标出了正确的答案。谢谢你的投票,德尔敏:)不客气。。你坦率的回答也是一种方法是的,这正是我想要实现的。我将把你的答案标记为已回答,因为我也不认为有比这更好的解决方案
ListTile(
contentPadding: EdgeInsets.zero,
leading: IconButton(
icon: Icon(Icons.check_circle),
onPressed: () => print('select'),
),
title: FlatButton(
padding: EdgeInsets.zero,
onPressed: () => print('on tap'),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text('TEST'),
Icon(Icons.arrow_forward_ios)
],
),
),
)