flutter 怎么拦截请求_flutter中事件传递:禁止用户交互 获取点击事件
可能有時(shí)候會(huì)需要這種需求
比如文本框可以響應(yīng)點(diǎn)擊事件但是禁止用戶輸入
直接粗暴的設(shè)置
TextField(enabled: false,)
這樣就無法得知ontap事件了,
當(dāng)然你可以用
enableInteractiveSelection: false
配合ontap 收鍵盤來達(dá)到目的
但是 不夠優(yōu)雅
記錄一下 flutter提供的兩個(gè)組件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');
},
),
],
),
),
)
],
)
區(qū)別:
IgnorePointer和AbsorbPointer,這兩個(gè)Widget都能阻止子樹接收指針事件,不同的是AbsorbPointer本身是可以接收指針事件的(但其子樹不行),而IgnorePointer本身就不可以接收指針事件
都是true到時(shí)候點(diǎn)擊
此時(shí)只有
AbsorbPointer可以響應(yīng) 而IgnorePointer則沒有反應(yīng)
檔都是false的時(shí)候
可以看到下邊的事件都可以響應(yīng)
總結(jié)
以上是生活随笔為你收集整理的flutter 怎么拦截请求_flutter中事件传递:禁止用户交互 获取点击事件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为平板wps语音朗读_华为隐藏的这五大
- 下一篇: ad10怎么挖铺的铜_一个西北阴阳的诡异