initialize method

  1. @override
List<ScatterParticle> initialize({
  1. required Size container,
  2. required Color? reader(
    1. int x,
    2. int y
    ),
})
override

Implementation

@override
List<ScatterParticle> initialize({
  required Size container,
  required Color? Function(int x, int y) reader,
}) {
  var random = Random();
  var particles = <ScatterParticle>[];
  for (int y = 0; y < container.height; y++) {
    for (int x = 0; x < container.width; x++) {
      final color = reader(x, y);
      if (color == null) continue;

      // Precompute a scatter offset so each particle moves deterministically during animation
      final scatterX = (random.nextDouble() - 0.5) * maxDistance;
      final scatterY = (random.nextDouble() - 0.5) * maxDistance;

      final particle = ScatterParticle(
        originalPosition: Offset(x.toDouble(), y.toDouble()),
        color: color,
        scatterOffset: Offset(scatterX, scatterY),
      );
      particles.add(particle);
    }
  }
  return particles;
}