Flutter Stack+Position 未定位组件的事件会影响已经定位的组件的事件响应

问题

在这里插入图片描述
我这里设置了3个部分进行定位,分别是头像、搜索框、和顶部按钮组,
设置一个没有定位的组件,顶部拖拽

代码类似下面展示

Stack(
          alignment: Alignment.center,
          fit: StackFit.expand, // 未定位widget占满Stack整个空间
          children: [
            /// 左上角头像
            Positioned(
              left: 0,
              child: Person(),
            ),
			/// 窗口移动函数
            const DragWindow(),
            /// 搜索框
            Positioned(
                top: 8,
                child: SizedBox(
                  width: MediaQuery.of(context).size.width / 3,
                  height: 32,
                  child: const SearchField(
                    hintText: "搜索联系人",
                  ),
                )),

            /// 右上角按钮
            const Positioned(
                right: 0,
                child: Row(children: [
                  ControllerButton(),
                  ControllerButton(),
                  ControllerButton()
                ]))
          ]),

但是发现,输入框和右上角按钮事件有响应,但是点击头像的事件没有响应

二、解决

这个时候,我们将没有定位的组件放在所有兄弟组件的上面

在这里插入图片描述

改为
在这里插入图片描述
这样问题就解决了

三、原因

因为Stack组件中,所有的组件就像叠罗汉一样,一行一层的叠上去的,未定位的组件,默认占据所有剩余空间,所以,应该将定位组件覆盖未定位组件,使事件不被覆盖

猜你喜欢

转载自blog.csdn.net/qq_45634989/article/details/130272836