anchor.diff:    void dispose() {
       _animationController.stop();
       _animationController.dispose();
  +    if (_fragmentShaderInitialized) {
  +      _fragmentShader.dispose();
  +    }
       super.dispose();
     }
   
  
positive.code:       );
      }
  
      final Paint paint = Paint()..shader = _createRippleShader();
      if (_clipCallback != null) {
        canvas.drawRect(_clipCallback!(), paint);
      } else {
  
negative.code:     final double rotation2 = turbulencePhase * _rotateLeft + 2.0 * math.pi;
      final double rotation3 = turbulencePhase * _rotateRight + 2.75 * math.pi;
  
      _fragmentShader
        // uColor
        ..setFloat(0, _color.red / 255.0)
        ..setFloat(1, _color.green / 255.0)
        ..setFloat(2, _color.blue / 255.0)
        ..setFloat(3, _color.alpha / 255.0)
        // uAlpha
        ..setFloat(4, _alpha.value)
        // uSparkleColor
        ..setFloat(5, 1.0)
        ..setFloat(6, 1.0)
        ..setFloat(7, 1.0)
        ..setFloat(8, 1.0)
        // uSparkleAlpha
        ..setFloat(9, _sparkleAlpha.value)
        // uBlur
        ..setFloat(10, 1.0)
        // uCenter
        ..setFloat(11, _center.value.x)
        ..setFloat(12, _center.value.y)
        // uRadiusScale
        ..setFloat(13, _radiusScale.value)
        // uMaxRadius
        ..setFloat(14, _targetRadius)
        // uResolutionScale
        ..setFloat(15, 1.0 / _width)
        ..setFloat(16, 1.0 / _height)
        // uNoiseScale
        ..setFloat(17, _noiseDensity / _width)
        ..setFloat(18, _noiseDensity / _height)
        // uNoisePhase
        ..setFloat(19, noisePhase / 1000.0)
        // uCircle1
        ..setFloat(20, turbulenceScale * 0.5 + (turbulencePhase * 0.01 * math.cos(turbulenceScale * 0.55)))
        ..setFloat(21, turbulenceScale * 0.5 + (turbulencePhase * 0.01 * math.sin(turbulenceScale * 0.55)))
        // uCircle2
        ..setFloat(22, turbulenceScale * 0.2 + (turbulencePhase * -0.0066 * math.cos(turbulenceScale * 0.45)))
        ..setFloat(23, turbulenceScale * 0.2 + (turbulencePhase * -0.0066 * math.sin(turbulenceScale * 0.45)))
        // uCircle3
        ..setFloat(24, turbulenceScale + (turbulencePhase * -0.0066 * math.cos(turbulenceScale * 0.35)))
        ..setFloat(25, turbulenceScale + (turbulencePhase * -0.0066 * math.sin(turbulenceScale * 0.35)))
        // uRotation1
        ..setFloat(26, math.cos(rotation1))
        ..setFloat(27, math.sin(rotation1))
        // uRotation2
        ..setFloat(28, math.cos(rotation2))
        ..setFloat(29, math.sin(rotation2))
        // uRotation3
        ..setFloat(30, math.cos(rotation3))
        ..setFloat(31, math.sin(rotation3));
    }
  
    /// Transforms the canvas for an ink feature to be painted on the [canvas].
  