paint method

  1. @override
void paint(
  1. Canvas canvas,
  2. Size size,
  3. double progress,
  4. Offset center,
  5. Color color, {
  6. double radiusMultiplier = 1.0,
  7. Offset positionOffset = Offset.zero,
})
override

Implementation

@override
void paint(
    Canvas canvas, Size size, double progress, Offset center, Color color,
    {double radiusMultiplier = 1.0, Offset positionOffset = Offset.zero}) {
  // Mempercepat progress dengan speedFactor
  // Ketika speedFactor = 1.5, akan mencapai progress 1.0 saat actual progress 0.67
  final adjustedProgress = math.min(1.0, progress * speedFactor);

  final adjustedCenter = center + positionOffset;

  // Menentukan radius widget
  final widgetRadius = math.min(size.width, size.height) * 0.5;

  // Menggambar core glow
  _drawCoreGlow(
      canvas, adjustedCenter, widgetRadius, color, adjustedProgress);

  // Gambar implosion rays (dari luar ke dalam)
  if (enableImplosion) {
    _drawImplosionRays(canvas, adjustedCenter, widgetRadius, color,
        adjustedProgress, radiusMultiplier);
  }

  // Gambar explosion rays (dari dalam ke luar)
  if (enableExplosion) {
    _drawExplosionRays(canvas, adjustedCenter, widgetRadius, color,
        adjustedProgress, radiusMultiplier);
  }
}