Flutter 在小部件后面单击
我有一个堆栈,里面有两个小部件。 我试图检测堆栈底部小部件的点击,它位于顶部小部件的后面 我使用的是Flutter 在小部件后面单击,flutter,dart,canvas,gesturedetector,propagation,Flutter,Dart,Canvas,Gesturedetector,Propagation,我有一个堆栈,里面有两个小部件。 我试图检测堆栈底部小部件的点击,它位于顶部小部件的后面 我使用的是HitTestBehavior.transparcent,但它仅在gesturedector没有任何子对象时才起作用 这是我在应用程序中所需内容的简化版本。我有一个堆栈,在屏幕上有许多小卡片,上面有一张画布。尽管有画布,但我需要能够点击卡片来更改其内容。我原以为使用半透明的行为可以解决我的问题,但事实并非如此 编辑:此外,第一个手势检测器将始终位于定位的小部件中 class TestPage扩展了
HitTestBehavior.transparcent
,但它仅在gesturedector
没有任何子对象时才起作用
这是我在应用程序中所需内容的简化版本。我有一个堆栈,在屏幕上有许多小卡片,上面有一张画布。尽管有画布,但我需要能够点击卡片来更改其内容。我原以为使用半透明的行为可以解决我的问题,但事实并非如此
编辑:此外,第一个手势检测器将始终位于定位的
小部件中
class TestPage扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:中(
孩子:大小盒子(
身高:800,
宽度:400,
子:堆栈(
儿童:[
///2…并触发此小部件的onTap功能
手势检测器(
行为:HitTestBehavior.不透明,
onTap:(){
打印(“点击底部”);
},
子:容器(
身高:500,
宽度:400,
颜色:颜色。深橙色,
),
),
///1.我想在这里停下来。。。
手势检测器(
行为:HitTestBehavior.transparent,
onTap:null,
子:容器(
身高:300,
宽度:400,
颜色:颜色。深紫色,
),
),
],
),
),
// ),
),
);
}
}
VrajGohil就这个问题给出了答案:
以下是他的解决方案:
class TestPage扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:中(
孩子:大小盒子(
身高:800,
宽度:400,
子:堆栈(
儿童:[
///2…并触发此小部件(小部件_2)的onTap功能
手势检测器(
行为:HitTestBehavior.不透明,
onTap:(){
打印(“点击底部”);
},
子:容器(
身高:500,
宽度:400,
颜色:颜色。深橙色,
),
),
///能触底
无知者(
是的,
子:容器(
身高:300,
宽度:400,
颜色:颜色。深紫色,
),
),
],
),
),
),
);
}
}
我有一个示例代码,您可以使用它来实现:
class TestPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: SizedBox(
height: 800,
width: 400,
child: Stack(
children: [
/// 2. ... and trigger the onTap function of this widget (WIDGET_2)
GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
print('TAP BOTTOM');
},
child: Container(
height: 500,
width: 400,
color: Colors.deepOrange,
),
),
/// Able to tap bottom
IgnorePointer(
ignoring: true,
child: Container(
height: 300,
width: 400,
color: Colors.deepPurple,
),
),
],
),
),
),
);
}
}
也很抱歉在这里发布的太晚