winner property

P? get winner

Implementation

P? get winner {
  if (competitors.isEmpty) return null;
  if (competitors.length == 1) return competitors[0];

  final competitor1 = competitors[0];
  final competitor2 = competitors[1];

  if (_isWalkOver(competitor1) && !_isWalkOver(competitor2)) {
    return competitor2;
  }
  if (_isWalkOver(competitor2) && !_isWalkOver(competitor1)) {
    return competitor1;
  }

  final score1 = scores.isNotEmpty ? scores[0] : 0;
  final score2 = scores.length > 1 ? scores[1] : 0;

  return score1 >= score2 ? competitor1 : competitor2;
}