当前位置: 首页 > article >正文

如何实现事件响应功能

文章目录

  • 1 概念介绍
  • 2 使用方法
  • 3 示例代码

我们在上一章回中介绍了ListView响应事件的内容,本章回中将介绍GestureDetector Widget.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1 概念介绍

我们在这里介绍的GestureDetector是一个事件响应Widget,它可以响应双击事件,长按事件,滑动事件,Flutter中使用GestureDetector类表示该Widget。
本章回中将详细介绍它的用法。顺便说一下我们介绍它的原因,上一章回中介绍了ListView响应事件的内容,主要分为滑动事件和点击事件,当时感觉主ListView响应
事件比较复杂,因此想找一个比较方便的方法来响应事件,于是找到了GestureDetector Widget.

2 使用方法

和其它Widget一样,GestureDetGector提供了相关的属性来响应事件,接下来我们分享一些常用的属性:

  • onTap属性:主要用来响应点击事件;
  • onDoubleTap属性:主要用来响应双击事件;
  • onLongPress属性:主要用来响应长按事件;
  • onHorizontalDragStart属性:主要用来响应水平方向的滑动事件;
  • onVerticalDragStart属性:主要用来响应垂直方向的滑动事件;
  • child属性:各种事件的响应载体。
    注意:GestureDetector组件是一个容器类Widget,child属性对应的Wiget才是各种事件的载体。因此该属性是必须属性。

3 示例代码

Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      backgroundColor: Colors.purpleAccent,
      title: const Text("Example of Gesture"),
    ),
    body: GestureDetector(
      child: Container(
        alignment: Alignment.center,
        color: Colors.greenAccent,
        width: 300,
        height: 300,
        child: const Text("Gesture Test"),
      ),
      onTap: () {
        print("onTap");
      },
      onDoubleTap: () {
        print("onDoubleTap");
      },
      onLongPress: () => print("onLongPress"),
      //向坐标值减小方向的滑动就是Horizon?
      onHorizontalDragStart: (dragDetails) =>
          print("onHorizontalDragStart: ${dragDetails.localPosition}"),
      //向坐标值增加方向的滑动就是Verti?
      onVerticalDragStart: (dragDetails) =>
          print("onVerticalDragStart: ${dragDetails.localPosition}"),
    ),
  );
}

上面的代码中我们给属性进行了赋值操作,操作内容就是打印一行日志。编译运行上面的代码,可以得到一个显示"Gesture Test"的文本,对文件进行双击,长按等
操作,可以输出不同的日志。我在这里就不演示程序运行结果了,建议大家自动动手去实践。
看官们,关于GestureDetector Widget相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!


http://www.kler.cn/a/521216.html

相关文章:

  • 三. Redis 基本指令(Redis 快速入门-03)
  • 14-6-1C++STL的list
  • IDEA创建修改gitee仓库
  • 利用双指针一次遍历实现”找到“并”删除“单链表倒数第K个节点(力扣题目为例)
  • 在每一次灵感碰撞中,见证成长的蜕变--24年年度总结
  • 【协议详解】卫星通信5G IoT NTN SIB31-NB 信令详解
  • 金价高企需求疲软,周大福近三个月零售值下降14.2%
  • leetcode刷题记录(一百)——121. 买卖股票的最佳时机
  • <iframe>标签和定时调用函数setInterval
  • ubuntu怎么杀死指定的进程的pid
  • 正在更新丨豆瓣电影详细数据的采集与可视化分析(scrapy+mysql+matplotlib+flask)
  • web前端9--定位
  • 向量和矩阵算法笔记
  • Tomcat - 高并发性能参数配置
  • 基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
  • 组件框架漏洞
  • mantisbt添加修改用户密码
  • 如何提升虾皮直播的网络速度
  • UE求职Demo开发日志#11 完善所有普攻伤害判定,普攻加个小特效
  • Kmesh v1.0 正式发布!7 大特性提升网络流量管理效率和安全性