如何制作好的颤动阴影效果?

JBa*_*aba 2 dart flutter flutter-animation

我想制作如下所示的良好阴影效果,

在此处输入图片说明 在此处输入图片说明

在互联网上找到的所有示例甚至都无法接近上述设计。

经过长时间的反复试验,我可以进行以下操作。还是做不出内心的阴影。如果有人能指导我如何破译这些设计,那就太好了。

在此处输入图片说明

用于制作上述按钮的代码,

Widget buildBackButton() {
    double size = 47;
    return Stack(
      children: <Widget>[
        Container(
          width: size,
          height: size,
          decoration: BoxDecoration(
              color: Colors.white,
              shape: BoxShape.circle,
              boxShadow: [
                BoxShadow(
                  color: Colors.black26,
                  offset: Offset(20, 20),
                  blurRadius: 40,
                ),
                BoxShadow(
                  color: Colors.white,
                  offset: Offset(-20, -20),
                  blurRadius: 25,
                )
              ]),
          child: Material(
            color: Color(0xffe0eafb),
            borderRadius: BorderRadius.circular(size),
            elevation: 10,
            child: Padding(
              padding: const EdgeInsets.all(3.0),
              child: ClipOval(
                clipper: MClipper(),
              ),
            ),
          ),
        ),
        Container(
            width: 45.0,
            height: 45.0,
            padding: EdgeInsets.only(left: 2, top: 2),
            child: new RawMaterialButton(
              shape: new CircleBorder(),
              fillColor: Color(0xffe0eafb),
              elevation: 10.0,
              child: Icon(
                Icons.arrow_back,
                color: Colors.black,
              ),
              onPressed: () {},
            )),
      ],
    );
  }

class MClipper extends CustomClipper<Rect> {
  @override
  Rect getClip(Size size) {
    return Rect.fromCircle(
        center: Offset(size.width / 2, size.height / 2),
        radius: min(size.width, size.height) / 2);
  }

  @override
  bool shouldReclip(CustomClipper<Rect> oldClipper) {
    return true;
  }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢。

ali*_*tor 5

蓝色凸起按钮

这是代码:

  Widget build(BuildContext context) {
    return Material(
      elevation: 2,
      type: MaterialType.button,
      color: Colors.transparent,
      borderRadius: BorderRadius.circular(1000),
      child: Container(
        decoration: BoxDecoration(
          border: Border.all(color: Color(0xff6C96F9), width: 2.0),
          borderRadius: BorderRadius.circular(1000),
          gradient: RadialGradient(
            center: Alignment(0.55, 0.55),
            focalRadius: 64,
            colors: [
              Color(0xff789DF9),
              Color(0xff477FF8),
            ],
          ),
        ),
        child: GestureDetector(
          onTap: () {},
          child: Padding(
            padding: const EdgeInsets.all(24.0),
            child: Icon(
              Icons.pause,
              color: Colors.white,
            ),
          ),
        ),
      ),
    );
  }
Run Code Online (Sandbox Code Playgroud)