computeOpacity function

double computeOpacity({
  1. required DateTime dueDate,
  2. required int daysDeadline,
  3. DateTime? now,
})

Calcula la opacidad (0..1) en función de la fecha de vencimiento y el plazo.

  • Retorna 1.0 si aún no hay atraso.
  • Decrece linealmente hasta 0.0 cuando daysDeadline días de atraso se cumplen.

Implementation

double computeOpacity({
  required DateTime dueDate,
  required int daysDeadline,
  DateTime? now,
}) {
  final DateTime current = now ?? DateTime.now().toUtc();
  final DateTime dueUtc = DateTime.utc(
    dueDate.year,
    dueDate.month,
    dueDate.day,
  );
  final DateTime currentUtc = DateTime.utc(
    current.year,
    current.month,
    current.day,
  );

  final int days = currentUtc.difference(dueUtc).inDays;
  if (days <= 0) return 1.0;

  final int daysLate = daysDeadline - days;
  double opacity = daysLate / daysDeadline;
  if (opacity < 0) opacity = 0;
  if (opacity > 1) opacity = 1;
  return opacity;
}