https://stackoverflow.com/questions/58690604/how-to-add-shadow-to-clipoval-in-flutter
class CustomClipperOval extends CustomClipper<Rect> { @override Rect getClip(Size size) { return Rect.fromCircle( center: Offset(size.width / 2, size.width / 2), radius: size.width / 2 + 3); } @override bool shouldReclip(CustomClipper<Rect> oldClipper) { return false; } } class ClipOvalShadow extends StatelessWidget { const ClipOvalShadow( {required this.shadow, required this.clipper, required this.child, Key? key}) : super(key: key); final Shadow shadow; final CustomClipper<Rect> clipper; final Widget child; @override Widget build(BuildContext context) { return CustomPaint( painter: _ClipOvalShadowPainter( clipper: clipper, shadow: shadow, ), child: ClipRect(clipper: clipper, child: child), ); } } class _ClipOvalShadowPainter extends CustomPainter { _ClipOvalShadowPainter({required this.shadow, required this.clipper}); final Shadow shadow; final CustomClipper<Rect> clipper; @override void paint(Canvas canvas, Size size) { final paint = shadow.toPaint(); final clipRect = clipper.getClip(size).shift(Offset.zero); canvas.drawOval(clipRect, paint); } @override bool shouldRepaint(CustomPainter oldDelegate) { return true; } }