setPenalty method
Establece una penalización sobre el tiempo actual.
Este método actualiza el tiempo actual que haya realizado el usuario en función de la penalización seleccionada. Si el usuario marca o desmarca una penalización, el tiempo se actualiza.
Características:
- Obtiene el tiempo actual de
currentTime
y se verifica si el tiempo no es nulo. - Si la penalización es "+2" y está habilitada, agrega 2 segundos al tiempo actual.
- Si la penalización es "DNF" y está habilitada, establece el tiempo como "DNF".
- Si la penalizacion es "none", dehabilita las otras penalizaciones.
- Si la penalización es desmarcada o es de tipo "none", el tiempo vuelve a su valor original.
- Finalmente, actualiza el estado con el nuevo tiempo.
Parámetros:
penalty
(String
): Tipo de penalización, puede ser "+2" o "DNF".isEnabled
(bool
): Indica si la penalización ha sido activada o desactivada.
Implementation
Future<void> setPenalty(String penalty, bool isEnabled) async {
if (_timeTraining == null) return;
if (penalty == "+2") {
if (isEnabled) {
// SE GUARDA EL TIEMPO ORIGINAL SOLO LA PRIMERA VEZ
_originalTime ??= _timeTraining!.timeInSeconds;
isPlusTwoChoose = true;
// SI ELIGE +2, SE QUITA EL DNF
isDnfChoose = false;
} else {
isPlusTwoChoose = false;
if (_originalTime != null) {
_timeTraining = TimeTraining(
idSession: _timeTraining!.idSession,
scramble: _timeTraining!.scramble,
comments: _timeTraining!.comments,
timeInSeconds: _originalTime!,
// RESTAURA EL TIEMPO ORIGINAL
penalty: isDnfChoose ? "DNF" : "",
);
}
// SE RESETEA EL TIEMPO ORIGINAL SOLO DESPUES DE RESTAURARLO
_originalTime = null;
}
} else if (penalty == "DNF") {
isDnfChoose = isEnabled;
if (isEnabled) {
// SI ELIGE DNF, SE QUITA EL +2
isPlusTwoChoose = false;
}
} // SEGUN LA PENALIZACION
if (penalty == "none") {
isDnfChoose = false;
isPlusTwoChoose = false;
// SE GUARDA EL TIEMPO ORIGINAL SOLO SI AUN NO HA SIDO ASIGNADO
_originalTime ??= _timeTraining!.timeInSeconds;
} // SI LA PENALIZACION ES 'none', SE DESACTIVAN LAS OTRAS PENALIZACIONES
// ACTUALIZAR EL TIEMPO EN EL ESTADO FLOBAL
_timeTraining = TimeTraining(
idSession: _timeTraining!.idSession,
scramble: _timeTraining!.scramble,
comments: _timeTraining!.comments,
// SI SE HA SELECCIONADO "+2", SE SUMAN 2 SEGUNDOS AL TIEMPO ORIGINAL.
// SI NO, SE USA EL TIEMPO ALMACENADO EN `_timeTraining`.
timeInSeconds: penalty == "none"
? _originalTime!
: (isPlusTwoChoose
? (_originalTime! + 2)
: (_timeTraining!.timeInSeconds)),
penalty: isDnfChoose ? "DNF" : (isPlusTwoChoose ? "+2" : "none"),
);
notifyListeners();
}