refactor game result view variable naming and layout
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m12s
Pull Request Pipeline / lint (pull_request) Successful in 2m12s

This commit is contained in:
2025-12-06 10:00:59 +01:00
parent 7323f52153
commit 03035138ac

View File

@@ -5,7 +5,6 @@ import 'package:game_tracker/data/dto/game.dart';
import 'package:game_tracker/data/dto/player.dart'; import 'package:game_tracker/data/dto/player.dart';
import 'package:game_tracker/presentation/widgets/buttons/custom_width_button.dart'; import 'package:game_tracker/presentation/widgets/buttons/custom_width_button.dart';
import 'package:game_tracker/presentation/widgets/tiles/custom_radio_list_tile.dart'; import 'package:game_tracker/presentation/widgets/tiles/custom_radio_list_tile.dart';
import 'package:game_tracker/presentation/widgets/top_centered_message.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class GameResultView extends StatefulWidget { class GameResultView extends StatefulWidget {
@@ -20,14 +19,16 @@ class GameResultView extends StatefulWidget {
class _GameResultViewState extends State<GameResultView> { class _GameResultViewState extends State<GameResultView> {
late final List<Player> allPlayers; late final List<Player> allPlayers;
late final AppDatabase db; late final AppDatabase db;
Player? _player; Player? _selectedPlayer;
@override @override
void initState() { void initState() {
db = Provider.of<AppDatabase>(context, listen: false); db = Provider.of<AppDatabase>(context, listen: false);
allPlayers = getAllPlayers(widget.game); allPlayers = getAllPlayers(widget.game);
if (widget.game.winner != null) { if (widget.game.winner != null) {
_player = allPlayers.firstWhere((p) => p.id == widget.game.winner!.id); _selectedPlayer = allPlayers.firstWhere(
(p) => p.id == widget.game.winner!.id,
);
} }
super.initState(); super.initState();
} }
@@ -78,20 +79,13 @@ class _GameResultViewState extends State<GameResultView> {
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
const SizedBox(height: 2), const SizedBox(height: 10),
Visibility( Expanded(
visible: allPlayers.isNotEmpty,
replacement: const TopCenteredMessage(
icon: Icons.info,
title: 'Info',
message: 'No players in this game.',
),
child: Expanded(
child: RadioGroup<Player>( child: RadioGroup<Player>(
groupValue: _player, groupValue: _selectedPlayer,
onChanged: (Player? value) { onChanged: (Player? value) {
setState(() { setState(() {
_player = value; _selectedPlayer = value;
}); });
}, },
child: ListView.builder( child: ListView.builder(
@@ -102,7 +96,7 @@ class _GameResultViewState extends State<GameResultView> {
value: allPlayers[index], value: allPlayers[index],
onContainerTap: (value) { onContainerTap: (value) {
setState(() { setState(() {
_player = value; _selectedPlayer = value;
}); });
}, },
); );
@@ -110,7 +104,6 @@ class _GameResultViewState extends State<GameResultView> {
), ),
), ),
), ),
),
], ],
), ),
), ),
@@ -118,11 +111,11 @@ class _GameResultViewState extends State<GameResultView> {
CustomWidthButton( CustomWidthButton(
text: 'Save', text: 'Save',
sizeRelativeToWidth: 0.95, sizeRelativeToWidth: 0.95,
onPressed: _player != null onPressed: _selectedPlayer != null
? () async { ? () async {
bool success = await db.gameDao.setWinner( bool success = await db.gameDao.setWinner(
gameId: widget.game.id, gameId: widget.game.id,
winnerId: _player!.id, winnerId: _selectedPlayer!.id,
); );
if (!context.mounted) return; if (!context.mounted) return;
if (success) { if (success) {