下图是一个 Stack
+ Positioned
组合成的组件:
代码如下:
Stack(
alignment: Alignment.topCenter,
clipBehavior: Clip.none,
children: [
Container(
width: 200,
height: 100,
color: Colors.red,
),
Positioned(
top: -30,
child: GestureDetector(
onTap: () {
print('点击橙色view');
},
child: Container(
width: 60,
height: 60,
color: Colors.orange,
),
),
),
],
),
此时橙色view超出红色view的那部分是不会响应点击手势的,原因是 Flutter 出于性能考虑。
如果想让它响应手势,我们可以用 Column
来组合一个完全相同的组件:
Column(
verticalDirection: VerticalDirection.up,
children: [
Container(
width: 200,
height: 100,
color: Colors.red,
),
Transform.translate(
offset: const Offset(0, 30),
child: GestureDetector(
onTap: () {
print('点击橙色view');
},
child: Container(
width: 60,
height: 60,
color: Colors.orange,
),
),
),
],
),