在移动端,各个平台或UI系统的原始指针事件模型基本都是一致,即:一次完整的事件分为三个阶段:手指按下,手指移动,和手指抬起,而更高级别的手势(如点击,双击,拖动等)都是基于这些原始事件的。
颤振中可以使用侦听器小部件来监听原始触摸事件,它也是一个功能性部件。
侦听器的常见属性
属性 类型 说明> 侦听器({ 关键的关键, 这一点。onPointerDown,//手指按下回调 这一点。onPointerMove,//手指移动回调 this.onPointerUp,//手指抬起回调 this.onPointerCancel,//触摸事件取消回调 这一点。行为=HitTestBehavior.deferToChild//在命中测试期间如何表现 小部件的孩子 }) >之前
用法如下:
侦听器(>///下拉刷新,这里必须使用异步,不然会报的错 Future异步_refresh () { 最后Completer 完成者=new Completer (); _dataList.clear ();//清空数据 设置状态((){ 页面=1; }); loadData(完成者);//加载数据 返回completer.future; } >之前 加载更多需要对ListView进行监听,所以需要进行监听器的设置,在状态中进行监听器的初始化。
ScrollController _scrollController=new ScrollController ();//初始化滚动监听器,加载更多使用1,直接监听_scrollController,根据是否滑动到底部来判断是否需要加载更多
_scrollController.addListener (() {//如果滑动到底部 如果(_scrollController.position。像素==_scrollController.position.maxScrollExtent) {//做某事 } }); >之前RefreshIndicator (> 新的侦听器(================向上移动================"); 打印(“scrollController==滑动距离=======${(位置-柔和)}"); var scrollExtent=scrollController.position.maxScrollExtent; 打印(“scrollController==ListView最大长度===$ {scrollExtent} "); 打印(“scrollController==所摸点长度===$ {scrollController.offset} "); 打印(“scrollController==所摸点离屏幕距离===${职位}"); var=scrollController结果。抵消+(位置-柔和).abs (); 如果(结果祝辞=scrollExtent) { 打印(“scrollController====到达底部”); lastListLength=scrollExtent; loadMore ();//加载更多数据 } } lastDownY=位置; }, 孩子:新ListView.builder ( 控制器:scrollController, itemCount:数据==null & # 63;0:datas.length, itemBuilder:(BuildContext上下文,int指数){ 返回容器(孩子:文本(“列表${指数}')) } ) ); >之前
日常使用文本框时候,弹出来的键盘如果是按钮提交有时候会出现键盘不自动隐藏关闭的情况,可以触发关闭弹出来的键盘。
FocusScope.of(上下文).requestFocus (FocusNode ());//或者 FocusNode _foucusNode=new FocusNode (); _foucusNode.unfocus (); 使用监听监听,在滑动屏幕的时候关闭键盘 侦听器( onPointerMove:(movePointEvent) { _foucusNode.unfocus (); }, 孩子:返回SingleChildScrollView ( 控制器:_scrollController, 孩子:列( 孩子们:& lt; Widget> (//一些部件 ), ) ) ) >之前以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
颤振中监听滑动事件