Fixed state problem with games list
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m6s
Pull Request Pipeline / lint (pull_request) Successful in 2m6s

This commit is contained in:
2025-12-09 18:26:05 +01:00
parent 062c2681bf
commit 701500c7e2
3 changed files with 23 additions and 16 deletions

View File

@@ -17,7 +17,8 @@ import 'package:game_tracker/presentation/widgets/tiles/choose_tile.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class CreateGameView extends StatefulWidget { class CreateGameView extends StatefulWidget {
const CreateGameView({super.key}); final VoidCallback? onWinnerChanged;
const CreateGameView({super.key, this.onWinnerChanged});
@override @override
State<CreateGameView> createState() => _CreateGameViewState(); State<CreateGameView> createState() => _CreateGameViewState();
@@ -231,7 +232,10 @@ class _CreateGameViewState extends State<CreateGameView> {
context, context,
CupertinoPageRoute( CupertinoPageRoute(
fullscreenDialog: true, fullscreenDialog: true,
builder: (context) => GameResultView(game: game), builder: (context) => GameResultView(
game: game,
onWinnerChanged: widget.onWinnerChanged,
),
), ),
); );
} }

View File

@@ -98,17 +98,16 @@ class _GameHistoryViewState extends State<GameHistoryView> {
} }
return GameHistoryTile( return GameHistoryTile(
onTap: () async { onTap: () async {
await Navigator.push( Navigator.push(
context, context,
CupertinoPageRoute( CupertinoPageRoute(
fullscreenDialog: true, fullscreenDialog: true,
builder: (context) => builder: (context) => GameResultView(
GameResultView(game: games[index]), game: games[index],
onWinnerChanged: refreshGameList,
),
), ),
); );
setState(() {
_gameListFuture = db.gameDao.getAllGames();
});
}, },
game: games[index], game: games[index],
); );
@@ -123,17 +122,13 @@ class _GameHistoryViewState extends State<GameHistoryView> {
text: 'Create Game', text: 'Create Game',
sizeRelativeToWidth: 0.90, sizeRelativeToWidth: 0.90,
onPressed: () async { onPressed: () async {
await Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) { builder: (context) =>
return const CreateGameView(); CreateGameView(onWinnerChanged: refreshGameList),
},
), ),
); );
setState(() {
_gameListFuture = db.gameDao.getAllGames();
});
}, },
), ),
), ),
@@ -141,4 +136,10 @@ class _GameHistoryViewState extends State<GameHistoryView> {
), ),
); );
} }
void refreshGameList() {
setState(() {
_gameListFuture = db.gameDao.getAllGames();
});
}
} }

View File

@@ -9,8 +9,9 @@ import 'package:provider/provider.dart';
class GameResultView extends StatefulWidget { class GameResultView extends StatefulWidget {
final Game game; final Game game;
const GameResultView({super.key, required this.game}); final VoidCallback? onWinnerChanged;
const GameResultView({super.key, required this.game, this.onWinnerChanged});
@override @override
State<GameResultView> createState() => _GameResultViewState(); State<GameResultView> createState() => _GameResultViewState();
} }
@@ -131,6 +132,7 @@ class _GameResultViewState extends State<GameResultView> {
winnerId: _selectedPlayer!.id, winnerId: _selectedPlayer!.id,
); );
} }
widget.onWinnerChanged?.call();
} }
List<Player> getAllPlayers(Game game) { List<Player> getAllPlayers(Game game) {