aStack
包含aMyWidget
内部。
Stack(
overflow: Overflow.visible,
children: [
Positioned(
top: 0.0,
left: 0.0,
child: MyWidget(),
)],
);
因为溢出大于
Positioned
和Overflow.visible
,所以它显示在MyWidget
之外,这是我想要的。但是,我不能点击
Stack
区域,它在Stack
区域之外。它只是忽略了那里的水龙头。如何确保
MyWidget
在那里接受手势? 最佳答案
好的,我做了一个解决方法,基本上我在父级上添加了一个GestureDetector
并实现了onTapDown
。
此外,您必须使用Widget
跟踪您的GlobalKey
以获得当前位置。
当检测到父级的Tap
时,检查tap位置是否在小部件内。
代码如下:
final GlobalKey key = new GlobalKey();
void onTapDown(BuildContext context, TapDownDetails details) {
final RenderBox box = context.findRenderObject();
final Offset localOffset = box.globalToLocal(details.globalPosition);
final RenderBox containerBox = key.currentContext.findRenderObject();
final Offset containerOffset = containerBox.localToGlobal(localOffset);
final onTap = containerBox.paintBounds.contains(containerOffset);
if (onTap){
print("DO YOUR STUFF...");
}
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTapDown: (TapDownDetails details) => onTapDown(context, details),
child: Container(
color: Colors.red,
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: Align(
alignment: Alignment.topLeft,
child: SizedBox(
width: 200.0,
height: 400.0,
child: Container(
color: Colors.black,
child: Stack(
overflow: Overflow.visible,
children: [
Positioned(
top: 0.0, left: 0.0,
child: Container(
key: key,
width: 500.0,
height: 200.0,
color: Colors.blue,
),
),
],
),
),
),
),
),
);
}
关于flutter - 在Flutter中,定位的Widget如何在其父Stack区域之外点击?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51366761/