flutter 怎么拦截请求_flutter中事件传递:禁止用户交互 获取点击事件

可能有时候会需要这种需求

比如文本框可以响应点击事件但是禁止用户输入

直接粗暴的设置

TextField(enabled: false,)

这样就无法得知ontap事件了,

当然你可以用

enableInteractiveSelection: false

配合ontap 收键盘来达到目的

但是 不够优雅

记录一下 flutter提供的两个组件AbsorbPointer  和 IgnorePointer

Column(

children: [

Text('AbsorbPointer'),

GestureDetector(

onTap: () {

print('AbsorbPointer');

},

child: AbsorbPointer(

absorbing: true,

child: Row(

children: [

TextField(enabled: false,),

RaisedButton(

onPressed: () {

print('onPressed');

},

),

RaisedButton(

onPressed: () {

print('onPressed');

},

),

RaisedButton(

onPressed: () {

print('onPressed');

},

),

RaisedButton(

onPressed: () {

print('onPressed');

},

),

],

),

),

),

Text('IgnorePointer'),

GestureDetector(

onTap: () {

print('IgnorePointer');

},

child: IgnorePointer(

ignoring: true,

child: Row(

children: [

RaisedButton(

onPressed: () {

print('onPressed');

},

),

RaisedButton(

onPressed: () {

print('onPressed');

},

),

RaisedButton(

onPressed: () {

print('onPressed');

},

),

RaisedButton(

onPressed: () {

print('onPressed');

},

),

],

),

),

)

],

)

区别:

IgnorePointer和AbsorbPointer,这两个Widget都能阻止子树接收指针事件,不同的是AbsorbPointer本身是可以接收指针事件的(但其子树不行),而IgnorePointer本身就不可以接收指针事件

都是true到时候点击

此时只有

AbsorbPointer可以响应 而IgnorePointer则没有反应

档都是false的时候

可以看到下边的事件都可以响应

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值