Flutter Widget组件库:AbsorbPointer
184
2024-07-04
描述
一个在hit testing中吸收点击事件的控件。
当absorbing
吸收属性为true
时,该小部件会终止对自身的hit testing,从而防止其子树接收到点击事件。它在布局期间仍然会占用空间,并正常为其子元素进行绘制。它只是防止其子元素成为点击事件的目标。
当ignoringSemantics
为true
时,子树将不会在语义层(以及例如辅助工具)中可见。
class
/// 该部件可以在hit testing期间吸收点击事件,阻止子树点击事件,并对语义层不可见。
class AbsorbPointer extends SingleChildRenderObjectWidget {
/// 创建一个在hit testing期间吸收点击的小部件。
const AbsorbPointer({
super.key,
this.absorbing = true,
@Deprecated(
'请改用ExcludeSemantics或创建自定义的吸收指针小部件。'
'此功能在v3.8.0-12.0.pre版本后被弃用。'
)
this.ignoringSemantics,
super.child,
});
/// 这个小部件在hit testing期间是否吸收点击事件。
///
/// 无论这个渲染对象在hit testing期间是否吸收点击事件,它都会在布局时占用空间,并在绘制时可见。
///
/// 默认值为true.
final bool absorbing;
/// 在编译无障碍语义树时,是否忽略此渲染对象的语义。
///
/// 有关语义树的更多信息,请参阅[SemanticsNode]。
@Deprecated(
'Use ExcludeSemantics or create a custom absorb pointer widget instead. '
'此功能在v3.8.0-12.0.pre版本后被弃用。'
)
final bool? ignoringSemantics;
}
使用
import 'package:flutter/material.dart';
class AbsorbPointerExample extends StatelessWidget {
const AbsorbPointerExample({super.key});
@override
Widget build(BuildContext context) {
return Stack(
alignment: AlignmentDirectional.center,
children: <Widget>[
SizedBox(
width: 200.0,
height: 100.0,
child: ElevatedButton(
onPressed: () {},
child: null,
),
),
SizedBox(
width: 100.0,
height: 200.0,
child: AbsorbPointer(
child: ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Colors.blue.shade200,
),
onPressed: () {},
child: null,
),
),
),
],
);
}
}
AbsorbPointer吸收了点击事件,导致其子Widget蓝色按钮不响应点击事件,同时Stack底层的按钮被遮挡部分也不响应点击事件。
- 0
- 0
-
赞助
微信支付宝 -
分享