diff --git a/lib/presentation/views/main_menu/game_result_view.dart b/lib/presentation/views/main_menu/game_result_view.dart index 80a0774..8b093c1 100644 --- a/lib/presentation/views/main_menu/game_result_view.dart +++ b/lib/presentation/views/main_menu/game_result_view.dart @@ -82,10 +82,11 @@ class _GameResultViewState extends State { Expanded( child: RadioGroup( groupValue: _selectedPlayer, - onChanged: (Player? value) { + onChanged: (Player? value) async { setState(() { _selectedPlayer = value; }); + await _handleWinnerSaving(); }, child: ListView.builder( itemCount: allPlayers.length, @@ -95,22 +96,15 @@ class _GameResultViewState extends State { value: allPlayers[index], onContainerTap: (value) async { setState(() { + // Check if the already selected player is the same as the newly tapped player. if (_selectedPlayer == value) { + // If yes deselected the player by setting it to null. _selectedPlayer = null; - } else { - _selectedPlayer = value; - } + } else + // If no assign the newly tapped player to the selected player. + (_selectedPlayer = value); }); - if (_selectedPlayer == null) { - await db.gameDao.removeWinner( - gameId: widget.game.id, - ); - } else { - await db.gameDao.setWinner( - gameId: widget.game.id, - winnerId: _selectedPlayer!.id, - ); - } + await _handleWinnerSaving(); }, ); }, @@ -127,6 +121,17 @@ class _GameResultViewState extends State { ); } + Future _handleWinnerSaving() async { + if (_selectedPlayer == null) { + await db.gameDao.removeWinner(gameId: widget.game.id); + } else { + await db.gameDao.setWinner( + gameId: widget.game.id, + winnerId: _selectedPlayer!.id, + ); + } + } + List getAllPlayers(Game game) { if (game.group == null && game.players != null) { return [...game.players!];