Flutter 阴影在一个圆形矩形中摆动

Flutter 阴影在一个圆形矩形中摆动,flutter,user-interface,widget,hybrid-mobile-app,shadow,Flutter,User Interface,Widget,Hybrid Mobile App,Shadow,我尝试将阴影添加到圆形容器中,但Flatter将阴影添加为容器是垂直矩形,这是我不希望看到的。我在谷歌上查找了这个问题,但找不到任何合适的解决方案,请帮我解决 集装箱编码 更新 来自@HardikKumar的回答&我实际上是多么想要它 很抱歉,我测试了您的代码,阴影形状与装饰框的边框相同 我只是把阴影的颜色编辑成黑色,这样我就能看得更清楚 也许你想用这样的按钮,你需要用ButtonTheme来表示高度和宽度 最终版本: 使用材质,它具有立面特性、ShapeOrder和BorderRadiusGe

我尝试将阴影添加到圆形容器中,但Flatter将阴影添加为容器是垂直矩形,这是我不希望看到的。我在谷歌上查找了这个问题,但找不到任何合适的解决方案,请帮我解决

集装箱编码

更新 来自@HardikKumar的回答&我实际上是多么想要它


很抱歉,我测试了您的代码,阴影形状与装饰框的边框相同

我只是把阴影的颜色编辑成黑色,这样我就能看得更清楚

也许你想用这样的按钮,你需要用ButtonTheme来表示高度和宽度

最终版本:

使用材质,它具有立面特性、ShapeOrder和BorderRadiusGeometry,您可以使用容器作为宽度和高度的材质父级

代码中的问题:

“blurRadius”为50时,更改“spreadRadius”或“偏移”时,在阴影中看不到任何差异

不透明度为0.15时,您几乎看不到黑色或白色背景色的阴影

请尝试以下代码:

Container(
  width: MediaQuery.of(context).size.width * 0.82,
  height: MediaQuery.of(context).size.height * 0.28,
  padding: const EdgeInsets.symmetric(horizontal: 12),
  decoration: BoxDecoration(
    color: Color(0xFFF9D276),
    borderRadius: BorderRadius.circular(35),
    boxShadow: [
      BoxShadow(
        //offset: Offset(0, 4),
        color: Color(0xFFF9D276), //edited
        spreadRadius: 4,
        blurRadius: 10  //edited
      )
    
  ),
),
它看起来是什么样子:


如果您还需要什么,请告诉我。

您可以从以下代码中使用圆角矩形:

Container(
   width: MediaQuery.of(context).size.width * 0.82,
   height: MediaQuery.of(context).size.height * 0.28,
   decoration: BoxDecoration(
      color: Colors.green[700],
      shape: BoxShape.rectangle,
      borderRadius:BorderRadius.all(
          Radius.circular(25)
          )
      ),
       margin: EdgeInsets.only(right: 8,top: 8),
       child: IconButton(
         icon: Icon(
            Icons.send,
            color: Colors.yellow[600],
            ),
         onPressed:() {}
        ),
  )

就我从你的第一张图片中得到的一些想法而言,你可以查看下面的代码

    Center(
        child: Container(
          decoration: BoxDecoration(
            borderRadius: BorderRadius.circular(15),
            color: Color(0xff000000),
            boxShadow: <BoxShadow>[
              new BoxShadow(
                color: Color(0x73000000),
                blurRadius: 5.0,
                spreadRadius: 1,
                offset: new Offset(-10.0, 0.0),
              ),
            ],
          ),
          width: MediaQuery.of(context).size.width * 0.82,
          height: MediaQuery.of(context).size.height * 0.25,
          child: Padding(
            padding: const EdgeInsets.fromLTRB(0, 0, 0, 0),
            child: Container(
              width: MediaQuery.of(context).size.width * 0.82,
              height: MediaQuery.of(context).size.height * 0.28,
//            padding: const EdgeInsets.symmetric(horizontal: 12),
              decoration: BoxDecoration(
                color: Color(0xFFF9D276),
                boxShadow: <BoxShadow>[
                  new BoxShadow(
                    color: Color(0xff000000),
                    blurRadius: 0.0,
                    spreadRadius: -2,
                    offset: new Offset(2.0, 0.0),
                  ),
                ],
                borderRadius: BorderRadius.circular(35),
              ),
            ),
          ),
        ),
      )

你想要什么样的阴影?你想让阴影只出现在一面吗?为了努力理解你想要的是什么,我想你想要的是使用容器的阴影在容器周围创建一个模糊效果。您提供的第二张照片与第一张照片的区别在于,阴影甚至不明显,而且照片的颜色稍浅。如果你想要的是提升效果,也许你应该使用一个平面按钮并使用它的提升参数,因为我认为你想使用阴影来创建这种效果,所以我建议使用一个允许提升的小部件你知道这样的小部件吗?你使用的是listView?您发布的图像没有任何阴影。正确地指定您的问题,您实际需要什么?一个稍微发光的阴影,它只扩散一点点
    Center(
        child: Container(
          decoration: BoxDecoration(
            borderRadius: BorderRadius.circular(15),
            color: Color(0xff000000),
            boxShadow: <BoxShadow>[
              new BoxShadow(
                color: Color(0x73000000),
                blurRadius: 5.0,
                spreadRadius: 1,
                offset: new Offset(-10.0, 0.0),
              ),
            ],
          ),
          width: MediaQuery.of(context).size.width * 0.82,
          height: MediaQuery.of(context).size.height * 0.25,
          child: Padding(
            padding: const EdgeInsets.fromLTRB(0, 0, 0, 0),
            child: Container(
              width: MediaQuery.of(context).size.width * 0.82,
              height: MediaQuery.of(context).size.height * 0.28,
//            padding: const EdgeInsets.symmetric(horizontal: 12),
              decoration: BoxDecoration(
                color: Color(0xFFF9D276),
                boxShadow: <BoxShadow>[
                  new BoxShadow(
                    color: Color(0xff000000),
                    blurRadius: 0.0,
                    spreadRadius: -2,
                    offset: new Offset(2.0, 0.0),
                  ),
                ],
                borderRadius: BorderRadius.circular(35),
              ),
            ),
          ),
        ),
      )