Flutter PointerEvent 与 OnTap,一个有效,另一个无效

标签 flutter animation events

我有一个我正在尝试创建的堆栈小部件,其中: 1. 用户触摸小部件按钮触发 pointerDown 事件。 2. 指针向下导致 slider 类型小部件从按钮后面从 0 缩放到 100% 3. 手指仍然向下,用户拖动以选择刻度上的一个值 4. 通过从屏幕上松开手指来选择值,即 pointerUp。

当我在步骤 1 中使用 onTap 而不是 pointerDown 时,小部件工作正常。但是当我尝试使用指针向下事件时,不会触发 _open 方法(管理 slider 的 scaleUp)。

我几乎完全遵循了这个例子:https://fireship.io/lessons/flutter-radial-menu-staggered-animations/ ,但已尝试像这样更改 floatingActionbuton 上的触摸事件:

  Transform.scale(
              scale: widget.scale.value,
              child: Listener(
                  onPointerDown: (PointerDownEvent event) {
                    print('pointer is down');
                    setState(() {
                      _open;
                    });
                  },
                  child: FloatingActionButton(child: Icon(Icons.blur_circular), onPressed: () {})),
            )

打印部分检测并触发事件,但 _open 方法不执行任何操作,菜单部分也没有像教程链接中那样出现。

我很茫然。

最佳答案

由于 FloatingActionButton 下方的按钮也有一个监听器,因此 Listener 小部件不会获取 PointerDown 事件。因此,要做到这一点,您必须将行为更改为 opaque,以便两者都能获得事件。

尝试这样的事情:

Listener(
  behavior: HitTestBehavior.opaque,
  onPointerDown: (PointerDownEvent details){

  },
  child: ...,
)

关于Flutter PointerEvent 与 OnTap,一个有效,另一个无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61232028/

相关文章:

Firefox 动画硬件加速像素化边缘

python - 有没有办法检测用户移动的 pygame 显示窗口?

android - 如何在Dart/Flutter中将主体添加到GET请求?

reactjs - react-native 使状态栏 'barStyle' 可动画化

flutter - 如何防止键盘将内容向上推?

css - 如何重新创建特定动画

nhibernate - 在更新 nhibernate 之前更改属性值

jquery - 如何不允许使用 jQuery 在文本输入字段中输入内容?

flutter - 如何在 flutter 列表和 map 中使用颜色和标题

flutter - 错误 : The operator '[]' isn't defined for the class 'Future<dynamic>'