泰尹网,世俱杯决赛时间,x战警天启迅雷下载
flutter是什么?
flutter是google一个新的用于构建跨平台的手机app的sdk。写一份代码,在android 和ios平台上都可以运行。
absorbpointer
absorbpointer是一种禁止用户输入的控件,比如按钮的点击、输入框的输入、listview的滚动等,你可能说将按钮的onpressed
设置为null,一样也可以实现,是的,但absorbpointer可以提供多组件的统一控制,而不需要你单独为每一个组件设置。
用法如下:
absorbpointer( child: row( children: <widget>[ raisedbutton(onpressed: (){},), raisedbutton(onpressed: (){},), raisedbutton(onpressed: (){},), raisedbutton(onpressed: (){},), ], ), )
默认情况下,这些按钮是否响应点击事件的,如果想要响应点击事件只需设置absorbing
为false即可:
absorbpointer( absorbing: false, ... )
ignorepointer
ignorepointer的用法和absorbpointer一样,而且达到的效果一样,用法如下:
ignorepointer( child: row( children: <widget>[ raisedbutton(onpressed: (){},), raisedbutton(onpressed: (){},), raisedbutton(onpressed: (){},), raisedbutton(onpressed: (){},), ], ), )
区别
absorbpointer
本身可以接收点击事件,消耗掉事件,而ignorepointer
无法接收点击事件,其下的控件可以接收到点击事件(不是子控件)。
如果有2个盒子,一个200x200的红色盒子,一个100x100的蓝色盒子,蓝色盒子位于红色盒子之上居中显示,给2个盒子添加点击事件,如下:
return container( height: 200, width: 200, child: stack( alignment: alignment.center, children: <widget>[ listener( onpointerdown: (v) { print('click red'); }, child: container( color: colors.red, ), ), listener( onpointerdown: (v) { print('click red'); }, child: container( color: colors.blue, width: 100, height: 100, ), ), ], ), );
点击蓝色盒子时,打印结果:
flutter: click blue
点击蓝色盒子区域以外的红色盒子,打印结果:
flutter: click red
此时用absorbpointer
包裹蓝色盒子:
return container( height: 200, width: 200, child: stack( alignment: alignment.center, children: <widget>[ listener( onpointerdown: (v) { print('click red'); }, child: container( color: colors.red, ), ), listener( onpointerdown: (v) { print('click blue self'); }, child: absorbpointer( child: listener( onpointerdown: (v) { print('click blue child'); }, child: container( color: colors.blue, width: 100, height: 100, ), ), ), ), ], ), );
点击蓝色盒子,打印如下:
flutter: click blue self
说明absorbpointer
本身接收到了点击事件,将absorbpointer
改为ignorepointer
,打印如下:
flutter: click red
点击事件穿透蓝色盒子到红色盒子,红色盒子接收到了点击事件。
使用场景
1、根据业务需求禁用/启用多个组件。
2、根据业务需求禁用/启用整个app。
交流
github地址:
170+组件详细用法:
总结
到此这篇关于浅析flutter absorbpointer 与 ignorepointer的区别的文章就介绍到这了,更多相关flutter absorbpointer 与 ignorepointer的区别内容请搜索移动技术网以前的文章或继续浏览下面的相关文章希望大家以后多多支持移动技术网!
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android Manifest中meta-data扩展元素数据的配置与获取方式
Android实现获取meta-data和build.gradle的值
Android获取清单文件中的meta-data,解决碰到数值为null的问题
解决webview 第二次调用loadUrl页面不刷新的问题
解决Android WebView拦截url,视频播放加载失败的问题
Android webview加载https链接错误或无响应的解决
网友评论