content: import 'package:flutter/rendering.dart';
  import 'package:flutter/widgets.dart';
  
  // Applies a BlendMode to its child.
  class BlendMask extends SingleChildRenderObjectWidget {
    final BlendMode blendMode;
    final double opacity;
  
    const BlendMask({
      required this.blendMode,
      this.opacity = 1.0,
      super.key,
      super.child,
    });
  
    @override
    RenderObject createRenderObject(context) {
      return RenderBlendMask(blendMode, opacity);
    }
  
    @override
    void updateRenderObject(BuildContext context, RenderBlendMask renderObject) {
      renderObject.blendMode = blendMode;
      renderObject.opacity = opacity;
    }
  }
  
  class RenderBlendMask extends RenderProxyBox {
    BlendMode blendMode;
    double opacity;
  
    RenderBlendMask(this.blendMode, this.opacity);
  
    @override
    void paint(context, offset) {
      // Create a new layer and specify the blend mode and opacity to composite it with:
      context.canvas.saveLayer(
        offset & size,
        Paint()
          ..blendMode = blendMode
          ..color = Color.fromARGB((opacity * 255).round(), 255, 255, 255),
      );
  
      super.paint(context, offset);
  
      // Composite the layer back into the canvas using the blendmode:
      context.canvas.restore();
    }
  }
  