首页 > 解决方案 > Flutter - Ontap InkWell 在 Stack 中不起作用

问题描述

我从颤振开始,我在使用 onTap() 时遇到问题。

我使用 adobeXd 制作模板,但似乎无法放置 GestureDetector 和 InkWell 小部件。

Transform.translate(
        offset: Offset(MediaQuery.of(context).size.width / 30, 132.0),
        child:
        Stack(
          children: <Widget>[
            Transform.translate(
              offset: Offset(MediaQuery.of(context).size.width / 1.7, 1.0),
              child:
              InkWell(
                onTap: (){
                  setState(() {
                    actu = true;
                  });
                  print('ink');

                },
                child: Stack(
                  children: <Widget>[
                    Container(
                      width: MediaQuery.of(context).size.width / 2.85,
                      height: 36.0,
                      decoration: BoxDecoration(
                        borderRadius: BorderRadius.circular(19.0),
                        color: const Color(0x35ffffff),
                      ),
                    ),
                    Transform.translate(
                      offset: Offset(MediaQuery.of(context).size.width / 3.7, 6.0),
                      child:
                      // Adobe XD layer: 'Icones/actualiser' (component)
                      XDIconesactualiser(),
                    ),
                    Transform.translate(
                      offset: Offset(MediaQuery.of(context).size.width / 21.47, MediaQuery.of(context).size.height / 110),
                      child:
                      SizedBox(
                        width: 75.0,
                        height: 27.0,
                        child: Text(
                          'Actualiser',
                          style: TextStyle(
                            fontFamily: 'OpenSans-SemiBold',
                            fontSize: 14,
                            color: const Color(0xffffffff),
                          ),
                          textAlign: TextAlign.left,
                        ),
                      ),
                    ),
                  ],
                ),
              ),
            )
          ],
        ),
      ),

onTap 不起作用。似乎是当它在堆栈或变换中时。你能帮助我吗 ?

编辑 :

事件未触发。没有任何事情发生,就好像它不存在一样。当我在开发工具中查看树时,会出现墨水池,但是当我点击手机时,什么也没有发生

我的 Flutter 树的图像

编辑 2:

我想要这样的结构

预期的

但是当我停用点击工作的偏移量时。我明白了

现实

标签: flutter

解决方案


如果它是您需要的墨水池动画,请BoxDecoration从小Container部件中删除(如果仅用于装饰,则完全删除),并将内部包裹StackInk小部件中,并将颜色设置为原始框装饰颜色。这对我有用。

child: Stack(
  children: <Widget>[
    Transform.translate(
      offset: Offset(MediaQuery.of(context).size.width / 1.7, 1.0),
      child: InkWell(
        onTap: () {
          setState(() {
            actu = true;
          });
          print('ink');
        },
        child: Ink(
          color: const Color(0x35ffffff),
            child: Stack(
              children: <Widget>[
                Container(
                  width: MediaQuery.of(context).size.width / 2.85,
                  height: 36.0,
                ),
        ...

推荐阅读