【问题标题】:Draggable widget blocks scroll gesture可拖动小部件阻止滚动手势
【发布时间】:2026-01-06 18:30:01
【问题描述】:

我有一个类似下面的树结构,基本上是一个SingleChildScrollView 内的Row,其中Row 的孩子是Draggables

Positioned(
          top: 250,
          left: 30,
          child: Container(
            child: SingleChildScrollView(
              scrollDirection: Axis.horizontal,
              child: Row(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: initialState.map((f) => LongPressDraggable(
                  child: f,
                  feedback: Transform.scale(scale: 0.4, child: f),
                  childWhenDragging: Container(),
                )).toList(),
              ),
            ),
          ),
        ),

问题是 Draggable 似乎正在消耗任何手势,因此,当点击(在本例中为长按)时,拖动效果有效,但似乎没有其他手势起作用,所以基本上滚动没有响应。

我尝试使用常规 Draggable 而不是 LongPressDraggable 并使用 affinity 属性,但即便如此,滚动也没有响应,只是拖动。

有什么帮助或建议吗?

【问题讨论】:

    标签: flutter dart scroll draggable gesture


    【解决方案1】:

    对于其他处理这个问题的人(最后是愚蠢的情况)......

    原来问题并非来自Draggable本身.....

    出于某种原因,将SingleChildScrollView 放在Positioned 中会阻止滚动...。

    在这个bug中找到了线索:bug report

    因此,在错误中提出的关于为 Positioned 的顶部、底部、左侧、右侧属性赋予双精度值的解决方案对我来说效果不佳。

    所以...我使用完全相同的代码解决了这个问题,但使用Align 小部件而不是Positioned

    【讨论】: