aStack包含aMyWidget内部。

Stack(
  overflow: Overflow.visible,
  children: [
    Positioned(
    top: 0.0,
    left: 0.0,
    child: MyWidget(),
  )],
);

因为溢出大于PositionedOverflow.visible,所以它显示在MyWidget之外,这是我想要的。
但是,我不能点击Stack区域,它在Stack区域之外。它只是忽略了那里的水龙头。
如何确保MyWidget在那里接受手势?

最佳答案

好的,我做了一个解决方法,基本上我在父级上添加了一个GestureDetector并实现了onTapDown
此外,您必须使用Widget跟踪您的GlobalKey以获得当前位置。
当检测到父级的Tap时,检查tap位置是否在小部件内。
代码如下:

final GlobalKey key = new GlobalKey();

      void onTapDown(BuildContext context, TapDownDetails details) {
        final RenderBox box = context.findRenderObject();
        final Offset localOffset = box.globalToLocal(details.globalPosition);
        final RenderBox containerBox = key.currentContext.findRenderObject();
        final Offset containerOffset = containerBox.localToGlobal(localOffset);
        final onTap = containerBox.paintBounds.contains(containerOffset);
        if (onTap){
          print("DO YOUR STUFF...");
        }
      }

      @override
      Widget build(BuildContext context) {
        return GestureDetector(
          onTapDown: (TapDownDetails details) => onTapDown(context, details),
          child: Container(
            color: Colors.red,
            width: MediaQuery.of(context).size.width,
            height: MediaQuery.of(context).size.height,
            child: Align(
              alignment: Alignment.topLeft,
                      child: SizedBox(
                width: 200.0,
                height: 400.0,
                child: Container(
                  color: Colors.black,
                    child: Stack(
                      overflow: Overflow.visible,
                      children: [
                        Positioned(
                          top: 0.0, left: 0.0,
                                          child: Container(
                            key: key,
                            width: 500.0,
                            height: 200.0,
                            color: Colors.blue,
                          ),
                        ),
                      ],
                    ),

                ),
              ),
            ),
          ),
        );
      }

关于flutter - 在Flutter中,定位的Widget如何在其父Stack区域之外点击?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51366761/

10-09 04:21