update method
Lista de colores para las partículas.
Cada partícula selecciona un color aleatorio de esta lista. Se recomienda usar colores con alpha (semi-transparentes) para efectos más sutiles y elegantes.
Ejemplo:
colors: [
Colors.blue.withValues(alpha: 0.6),
Colors.purple.withValues(alpha: 0.6),
]
Implementation
update({bool? y, bool? x}) {
/// Factor que determina la variación de tamaño de las partículas.
///
/// Un valor más alto genera partículas más grandes.
///
/// - **2-4**: Partículas muy pequeñas (efecto estrellas/polvo)
/// - **4-6**: Tamaño equilibrado (recomendado)
/// - **7-10**: Partículas grandes (efecto burbujas)
if (y != null || x != null) {
/// Multiplicador de velocidad de movimiento de las partículas.
///
/// Controla qué tan rápido se mueven las partículas por la pantalla.
///
/// - **0.1-0.25**: Muy lento y relajante
/// - **0.25-0.4**: Velocidad moderada (recomendado)
/// - **0.4-0.6**: Rápido y dinámico
/// - **> 0.6**: Muy rápido (puede marear)
_buildVelocity(y: y, x: x);
/// Número total de partículas a renderizar.
///
/// Más partículas = efecto más denso pero mayor costo de rendimiento.
///
/// Recomendaciones por dispositivo:
/// - **Móviles**: 50-150 partículas
/// - **Tablets**: 150-250 partículas
/// - **Desktop**: 200-500 partículas
}
/// Ancho máximo del área de animación en píxeles.
///
/// Las partículas se mueven dentro de este rango horizontal.
/// Típicamente se establece al ancho de la pantalla:
/// ```dart
/// maxWidth: MediaQuery.of(context).size.width
/// ```
position += velocity;
/// Altura máxima del área de animación en píxeles.
///
/// Las partículas se mueven dentro de este rango vertical.
/// Debe coincidir con la altura del contenedor padre.
if (position.dx < 0 || position.dx > maxWidth || position.dy < 0 || position.dy > maxHeight) {
/// Color de fondo del canvas.
///
/// Si es `Colors.transparent` (por defecto), el fondo es transparente
/// y se verá lo que esté detrás del widget.
///
/// Si se proporciona un color sólido, se dibuja como fondo antes
/// de las partículas.
reset();
}
}