我正在尝试实现一个可调整大小的小部件,其拐角处带有手柄。拐角手柄将Stack溢出一半宽度/高度。

问题:,当内部工作正常时,手柄的外部不报告手势事件。

这是有意的,或者我做错了什么。如果是预期的行为,那么下一步该做什么。

样例代码

      Widget build(BuildContext context) {
        return Scaffold(
          backgroundColor: Colors.green,
          body: Transform.translate(
            offset: boxOffset,
            child: Stack(
              overflow: Overflow.visible,
              fit: StackFit.expand,
              children: <Widget>[
                Container(
                  width: 100.0,
                  height: 100.0,
                  color: Colors.red,
                ),
                Positioned(
                  left: 100.0 - 20.0,
                  top: 100.0 - 20.0,
                  child: GestureDetector(
                    onTap: () {print("tapped");},
                    child: Container(
                      width: 80.0,
                      height: 80.0,
                      color: Colors.blue,
                    ),
                  ),
                )
              ],
            ),
          )
        );
    }

dart - 未收到堆栈边界之外的手势响应-LMLPHP

最佳答案

这是所需的行为。如果小部件可以捕获其边界之外的指针事件;容易陷入无法确定目标是哪个小部件的情况。

简而言之,不要使用溢出。重构您的布局,以确保其完全包含在其父级的边界之内。

08-16 03:51