【问题标题】:How can I detect multiple touches in Flutter?如何在 Flutter 中检测多个触摸?
【发布时间】:2021-04-18 09:50:43
【问题描述】:

大家好,

我是 Flutter 的新手,想构建一个应用程序,以检测多次触摸,并且如果触摸持续时间更长,则会在此处设置一个圆圈

与此类似,PlayStore 中有应用 “Chwazi Finger Chooser”。这就是整个事情最终的样子。

您能帮我告诉我需要哪些组件吗? 或者如果可能的话建议一些代码?

到目前为止,我还没有通过我的研究找到答案,现在希望你能找到答案!

请帮帮我:)

【问题讨论】:

    标签: java android flutter dart flutter-animation


    【解决方案1】:

    检查GestureDetector 小部件 以及那些可用的事件https://flutter.dev/docs/development/ui/advanced/gestures

    然而,使用OnGestureListener 检测多点触控手势似乎没有默认实现。

    您可能尝试过的第一件事是阅读event.pointerCount 以计算屏幕上的手指数。但是,这将等于 1。这是因为您(很可能)永远无法在完全相同的毫秒内用两根手指触摸屏幕。

    修复它

    您必须缓冲pointerCount(屏幕上的手指数量)。首先在您打算跟踪手势的上下文中的某处添加这些变量:

    // track how many fingers are used
    
    var bufferedPointerCount = 1
    var bufferTolerance = 500 // in ms
    var pointerBufferTimer = Timer()
    

    然后,在 onTouchEvent(event: MotionEvent) 函数中,添加:

        // Buffer / Debounce the pointer count
    if (event.pointerCount > bufferedPointerCount) {
      bufferedPointerCount = event.pointerCount
      pointerBufferTimer = fixedRateTimer("pointerBufferTimer", true, bufferTolerance, 1000) {
        bufferedPointerCount = 1
        this.cancel() // a non-recurring timer
      }
    

    }

    基本上这会跟踪显示屏上的最大手指数量,并使其在 bufferTolerance 毫秒内有效(此处为:500)。

    【讨论】:

    • 非常感谢。但是例如一个圆圈是如何出现在触摸的位置的?
    • 检查 CustomPainter 小部件,我认为这会有所帮助并检查此github.com/nateshmbhat/touchablehttps://github.com/nateshmbhat/…,如果您找到了有关检测多语的先前答案,请投票并将其标记为已回答
    • 有时间我会试试的。如果我需要帮助,我会寻求帮助,希望有人(或你)可以帮助我:D 我真的想要一个像 chwazi 手指选择器这样的应用程序,这就是我的目标
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    相关资源
    最近更新 更多