Flutter中的点击事件和回调

本文介绍了在Flutter中如何使用InkWell和GestureDetector处理点击事件,包括各自支持的触控操作和推荐场景。同时,展示了如何通过接口回调实现点击事件监听。

        不同于Android中所有的View可以通过设置点击setOnClickListener { }方法,在Flutter有些widget是不支持直接添加onPress事件的,用法和原生区别很大,列举了常用两种方式。

一、InkWell

InkWell中点击事件分为来管理点击回调和水波动画。

onTap: () // 单击

onDoubleTap: () // 双击

onLongPress: ()// 长按

InkWell(
      onTap: (){},
      child: Container()
)

二、GestureDetector

onTap: () // 单击

onDoubleTap: () // 双击

onLongPress: () // 长按

onTapCancel:() //取消

onTapUp:(e) //松开

onTapDown:(e) //按下

拖动手势主要由

onPanDown //手指按下

onPanUpdate //手指滑动

onPanEnd //滑动结束

onScaleUpdate:(ScaleUpdateDetails e) //缩放

GestureDetector(
  child: Text("点击"),
  onTap: () {}
)

        如果没有特殊要求,只相应onTap的话,尽可能用InkWell,,开发中InkWell,反应比较灵敏一点弹出的软键盘无法关闭,尽可能使用GestureDetector。

三、点击事件的回调

        在Android中经常定义接口,使用接口回调的方式,在Flutter中也有类似的实现。

1、定义接口

abstract class OnDialogClickListener {
  void onConfirm();
  void onCancel();
}

2、初始化接口数据

class MyDialog extends StatelessWidget {
  final OnDialogClickListener? listener;

  const MyDialog({Key? key, this.listener}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return InkWell(
      child: Container(
        width: 50,
        height: 50,
        color: Colors.blue,
      ),
      onTap: () => {
        listener?.onConfirm(),
        Navigator.of(context).pop(),
      },
    );
  }
}

3、实现接口

class App extends StatelessWidget implements OnDialogClickListener {
  @override
  Widget build(BuildContext context) {
    return MyDialog(
      listener: this,
    );
  }

  @override
  void onCancel() {
    //取消
  }

  @override
  void onConfirm() {
    //确定
  }
}

        这样点击时候就可以在onConfirm或者onCancel中监听到了。。。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值