drawShadows method
Implementation
void drawShadows(Canvas canvas, Path path, List<BoxShadow> shadows) {
for (final BoxShadow shadow in shadows) {
final Paint shadowPainter = shadow.toPaint();
if (shadow.spreadRadius == 0) {
canvas.drawPath(path.shift(shadow.offset), shadowPainter);
} else {
Rect zone = path.getBounds();
double xScale = (zone.width + shadow.spreadRadius) / zone.width;
double yScale = (zone.height + shadow.spreadRadius) / zone.height;
Matrix4 m4 = Matrix4.identity();
m4.translate(zone.width / 2, zone.height / 2);
m4.scale(xScale, yScale);
m4.translate(-zone.width / 2, -zone.height / 2);
canvas.drawPath(
path.shift(shadow.offset).transform(m4.storage), shadowPainter);
}
}
Paint whitePaint = Paint()..color = decoration.color ?? Colors.black;
canvas.drawPath(path, whitePaint);
}