paintBlurredCircle method

void paintBlurredCircle({
  1. required Canvas canvas,
  2. required Matrix4 transform,
  3. required Paint paint,
  4. required Offset center,
  5. required double radius,
  6. required TextDirection textDirection,
  7. ShapeBorder? customBorder,
  8. BorderRadius borderRadius = BorderRadius.zero,
  9. RectCallback? clipCallback,
})

Implementation

void paintBlurredCircle({
  required Canvas canvas,
  required Matrix4 transform,
  required Paint paint,
  required Offset center,
  required double radius,
  required TextDirection textDirection,
  ShapeBorder? customBorder,
  BorderRadius borderRadius = BorderRadius.zero,
  RectCallback? clipCallback,
}) {
  final Offset? originOffset = MatrixUtils.getAsTranslation(transform);
  canvas.save();
  if (originOffset == null) {
    canvas.transform(transform.storage);
  } else {
    canvas.translate(originOffset.dx, originOffset.dy);
  }
  if (clipCallback != null) {
    final Rect rect = clipCallback();
    if (customBorder != null) {
      canvas.clipPath(
          customBorder.getOuterPath(rect, textDirection: textDirection));
    } else if (borderRadius != BorderRadius.zero) {
      canvas.clipRRect(RRect.fromRectAndCorners(
        rect,
        topLeft: borderRadius.topLeft,
        topRight: borderRadius.topRight,
        bottomLeft: borderRadius.bottomLeft,
        bottomRight: borderRadius.bottomRight,
      ));
    } else {
      canvas.clipRect(rect);
    }
  }

  final circle = Path()
    ..addOval(Rect.fromCircle(center: center, radius: radius));

  canvas.drawPath(circle, paint);
  canvas.restore();
}