gpt4 book ai didi

dart - Flutter Overlapped InkWells 手势检测

转载 作者:IT王子 更新时间:2023-10-29 07:13:51 26 4
gpt4 key购买 nike

在处理应用程序时,我们有一个实例,我们希望卡片上有一个墨水池以及卡片上的一个按钮(也有一个墨水池)。但是,我一直无法确定一种方法来分离手势,以便只调用用户点击下的墨水瓶。就像今天一样,水龙头似乎“流过”到下一个墨水池,从而调用了两种飞溅效果。这是不受欢迎的行为,应用程序似乎在选择卡片而不是卡片上的可调用项(注意:实际应用程序有很大不同,但存在相同的问题)。我在一个简单的应用程序中重现了这一点,以演示当用户按下卡片右下角的按钮时的渗色。我缺少什么可以防止这种行为吗?谢谢

  class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return new Scaffold(
body: Card(
color: Colors.blue,
child: InkWell(
onTap: () { },
child: Container(
height: 150.0,
child: Align(
alignment: Alignment.bottomRight,
child: RaisedButton(
color: Colors.red,
onPressed: () { },
),
),
),
),
),
);
}
}

最佳答案

这是正常预期的 InkWell 行为,因为在大多数情况下,您希望对其树中的每个小部件使用点击功能。所以你可以做的是定义一个 Stack 并在 InkWell 上方的 z 轴绝对值中设置按钮:

Widget build(BuildContext context) {
return new Scaffold(
body: Center(
child: Card(
color: Colors.blue,
child: Stack(
children: <Widget>[
InkWell(
onTap: () {
print("inkwell");
},
child: Container(
height: 150.0,
),
),
RaisedButton(
color: Colors.red,
onPressed: () {
print("button");
},
),
],
),
),
),
);
}

如果你想再次设置右下角的按钮,你可以在它周围设置一个 Row 和 Colum 并指定它的对齐方式:

@override
Widget build(BuildContext context) {
return new Scaffold(
body: Center(
child: Container(
height: 150.0,
child: Card(
color: Colors.blue,
child: Stack(
children: <Widget>[
InkWell(
onTap: () {
print("inkwell");
},
child: Container(
height: 150.0,
),
),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Column(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
RaisedButton(
color: Colors.red,
onPressed: () {
print("button");
},
),
],
),
],
),
],
),
),
),
),
);
}

上面的代码会产生分离的小部件: enter image description here enter image description here

关于dart - Flutter Overlapped InkWells 手势检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51006349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com