computeOpacity function
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
daysDeadlinedí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;
}