Flutter 如何启用和屏蔽点击事件(事件透传和防止透传)
  SSVqwpswHvNR 2023年11月02日 105 0


AbsorbPointer 介绍
官方说明

/// A widget that absorbs pointers during hit testing.
一个可拦截子视图点击事件的Widget .

/// When [absorbing] is true, this widget prevents its subtree from receiving
/// pointer events by terminating hit testing at itself.
当 absorbing 属性值为 true 时 , AbsorbPointer 将用户的点击事件消耗掉不让其子组件接收到 .

///It still consumes space during layout and paints its child as usual.
AbsorbPointer 会占用布局的空间并包裹在子组件外面 .

/// It just prevents its children
/// from being the target of located events, because it returns true from
/// [RenderBox.hitTest].
AbsorbPointer 的作用就是控制子Widget 获取用户的点击事件 , 但不能将它作为点击事件的目标 .

首先,AbsorbPointer和IgnorePointer都可以用来拦截点击事件,AbsorbPointer通过absorbing可以响应事件
如下示例,可以接收到点击事件

AbsorbPointer(
      absorbing: false,
      child: RaisedButton(
          child: Text("button01"),
          onPressed: () {
            print("onclick");
          }),
    );

但是两者又有所不同,在嵌套事件中,AbsorbPointer会消费掉点击事件,不会穿透容器而向下传递,但是IgnorePointer却可以

absorbing 属性

Flutter 如何启用和屏蔽点击事件(事件透传和防止透传)_flutter


IgnorePointer介绍

官方说明

/// A widget that is invisible during hit testing.
一个在接收到点击事件过程中不可见的Widget .

/// When [ignoring] is true, this widget (and its subtree) is
invisible to hit testing. 当 ignoring 属性值为true时 , IgnorePointer
在收到点击事件时是不可见的 .

It still consumes space during layout and paints its child as usual.
IgnorePointer 在收到点击事件后虽然不可见,但是会占用空间的,同时会完成子Widget的绘制 .

ignoring 属性

Flutter 如何启用和屏蔽点击事件(事件透传和防止透传)_开发语言_02


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  xaeiTka4h8LY   2024年05月17日   51   0   0 数据库JavaSQL
SSVqwpswHvNR