点击 Flutter 时 Inkwell Splash Effect 不显示 |扑

Inkwell Splash Effect not showing in Flutter when taps on it | Flutter

  Widget build(BuildContext context) {
    return Column(
      children: [
        InkWell(
          child: CircleAvatar(
            radius: 40,
            backgroundColor: Colors.grey[600],
            child: CircleAvatar(
              radius: 37,
              backgroundColor: Colors.white,
              child: Stack(
                children: [
                  Positioned(
                    top: 4,
                    left: 4,
                    bottom: 4,
                    right: 4,
                    child: IconButton(
                      icon: Icon(
                        icon,
                        size: 40,
                        color: Colors.grey[600],
                      ),
                      onPressed: onpress,
                    ),
                  ),
                ],
              ),
            ),
          ),
        ),
       

点击此按钮时,我没有得到任何飞溅效果或任何其他效果。我也为不同的小部件添加了墨水池,但它仍然无法正常工作

通过检查你的代码 onTap: (){}, 被禁用但是通过添加 onTap 仍然不显示飞溅效果所以我添加了一个额外的 Position 小部件并且通过这个我通过使用 Material[=13 给出了飞溅效果=]

InkWell(
                onTap: (){},
                splashColor: Colors.brown,
                child: CircleAvatar(
                  radius: 40,
                  backgroundColor: Colors.grey[600],
                  child: CircleAvatar(
                    radius: 37,
                    backgroundColor: Colors.white,
                    child: Stack(
                      children: [
                        Positioned(
                          top: 4,
                          left: 4,
                          bottom: 4,
                          right: 4,
                          child: IconButton(
                            icon: Icon(
                              Icons.ten_k,
                              size: 40,
                              color: Colors.grey[600],
                            ),
                            onPressed: () {},
                          ),
                        ),
                        Positioned(  // This I'm added
                          left: 0.0,
                          top: 0.0,
                          bottom: 0.0,
                          right: 0.0,
                          child: Material(   
                            type: MaterialType.transparency,
                            child: InkWell(
                              onTap: () async {
                                await Future.delayed(
                                    Duration(milliseconds: 200));

                              },
                            ),
                          ),
                        ),
                      ],
                    ),
                  ),
                ),
              ),

Material 小部件包裹 InkWell

Material(
  child: InkWell(
    child:...
    onTap:(){ //<-- must not be null otherwise it is considered as disabled
    }
  )
)

您必须将 onTap 参数添加到 InkWell 小部件,否则它将被禁用,因此不会有任何效果。

您的 InkWell 小部件应该是这样的:

  InkWell(
        onTap: () {},
        child: CircleAvatar(
          radius: 40,
          child: ....,
        ),
      ),