From 701500c7e2db2d358da6dcdc25b5a84460851f1e Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Tue, 9 Dec 2025 18:26:05 +0100 Subject: [PATCH] Fixed state problem with games list --- .../create_game/create_game_view.dart | 8 ++++-- .../views/main_menu/game_history_view.dart | 27 ++++++++++--------- .../views/main_menu/game_result_view.dart | 4 ++- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/lib/presentation/views/main_menu/create_game/create_game_view.dart b/lib/presentation/views/main_menu/create_game/create_game_view.dart index 6643a52..8b3271c 100644 --- a/lib/presentation/views/main_menu/create_game/create_game_view.dart +++ b/lib/presentation/views/main_menu/create_game/create_game_view.dart @@ -17,7 +17,8 @@ import 'package:game_tracker/presentation/widgets/tiles/choose_tile.dart'; import 'package:provider/provider.dart'; class CreateGameView extends StatefulWidget { - const CreateGameView({super.key}); + final VoidCallback? onWinnerChanged; + const CreateGameView({super.key, this.onWinnerChanged}); @override State createState() => _CreateGameViewState(); @@ -231,7 +232,10 @@ class _CreateGameViewState extends State { context, CupertinoPageRoute( fullscreenDialog: true, - builder: (context) => GameResultView(game: game), + builder: (context) => GameResultView( + game: game, + onWinnerChanged: widget.onWinnerChanged, + ), ), ); } diff --git a/lib/presentation/views/main_menu/game_history_view.dart b/lib/presentation/views/main_menu/game_history_view.dart index 5d52ac8..46cb1db 100644 --- a/lib/presentation/views/main_menu/game_history_view.dart +++ b/lib/presentation/views/main_menu/game_history_view.dart @@ -98,17 +98,16 @@ class _GameHistoryViewState extends State { } return GameHistoryTile( onTap: () async { - await Navigator.push( + Navigator.push( context, CupertinoPageRoute( fullscreenDialog: true, - builder: (context) => - GameResultView(game: games[index]), + builder: (context) => GameResultView( + game: games[index], + onWinnerChanged: refreshGameList, + ), ), ); - setState(() { - _gameListFuture = db.gameDao.getAllGames(); - }); }, game: games[index], ); @@ -123,17 +122,13 @@ class _GameHistoryViewState extends State { text: 'Create Game', sizeRelativeToWidth: 0.90, onPressed: () async { - await Navigator.push( + Navigator.push( context, MaterialPageRoute( - builder: (context) { - return const CreateGameView(); - }, + builder: (context) => + CreateGameView(onWinnerChanged: refreshGameList), ), ); - setState(() { - _gameListFuture = db.gameDao.getAllGames(); - }); }, ), ), @@ -141,4 +136,10 @@ class _GameHistoryViewState extends State { ), ); } + + void refreshGameList() { + setState(() { + _gameListFuture = db.gameDao.getAllGames(); + }); + } } diff --git a/lib/presentation/views/main_menu/game_result_view.dart b/lib/presentation/views/main_menu/game_result_view.dart index f13553b..6e60410 100644 --- a/lib/presentation/views/main_menu/game_result_view.dart +++ b/lib/presentation/views/main_menu/game_result_view.dart @@ -9,8 +9,9 @@ import 'package:provider/provider.dart'; class GameResultView extends StatefulWidget { final Game game; - const GameResultView({super.key, required this.game}); + final VoidCallback? onWinnerChanged; + const GameResultView({super.key, required this.game, this.onWinnerChanged}); @override State createState() => _GameResultViewState(); } @@ -131,6 +132,7 @@ class _GameResultViewState extends State { winnerId: _selectedPlayer!.id, ); } + widget.onWinnerChanged?.call(); } List getAllPlayers(Game game) {