GameResultView erstellen #62

Merged
flixcoo merged 31 commits from feature/48-game-result-view-erstellen into development 2025-12-06 14:06:29 +00:00
Showing only changes of commit 03035138ac - Show all commits

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/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/top_centered_message.dart';
import 'package:provider/provider.dart';
class GameResultView extends StatefulWidget {
@@ -20,14 +19,16 @@ class GameResultView extends StatefulWidget {
class _GameResultViewState extends State<GameResultView> {
late final List<Player> allPlayers;
late final AppDatabase db;
Player? _player;
Player? _selectedPlayer;
sneeex marked this conversation as resolved Outdated

Umbenennen in selectedPlayer oder currentWinner o.Ä.

Umbenennen in `selectedPlayer` oder `currentWinner` o.Ä.
@override
void initState() {
db = Provider.of<AppDatabase>(context, listen: false);
allPlayers = getAllPlayers(widget.game);
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();
}
@@ -78,20 +79,13 @@ class _GameResultViewState extends State<GameResultView> {
fontWeight: FontWeight.bold,
),
),
sneeex marked this conversation as resolved Outdated

Würde height mindestens auf 10 erhöhen

Würde `height` mindestens auf 10 erhöhen
const SizedBox(height: 2),
Visibility(
visible: allPlayers.isNotEmpty,
replacement: const TopCenteredMessage(
icon: Icons.info,
title: 'Info',
message: 'No players in this game.',
),
child: Expanded(
const SizedBox(height: 10),
Expanded(
child: RadioGroup<Player>(
sneeex marked this conversation as resolved Outdated

Macht das Sinn überhaupt zu implementieren? Gibt es Fälle in denen ein Spiel keine Spieler hat?

Macht das Sinn überhaupt zu implementieren? Gibt es Fälle in denen ein Spiel keine Spieler hat?

Eigentlich nicht, soll ich's weglassen dann?

Eigentlich nicht, soll ich's weglassen dann?
groupValue: _player,
groupValue: _selectedPlayer,
onChanged: (Player? value) {
setState(() {
_player = value;
_selectedPlayer = value;
});
},
child: ListView.builder(
@@ -102,7 +96,7 @@ class _GameResultViewState extends State<GameResultView> {
value: allPlayers[index],
onContainerTap: (value) {
setState(() {
_player = value;
_selectedPlayer = value;
});
},
);
@@ -110,7 +104,6 @@ class _GameResultViewState extends State<GameResultView> {
),
),
),
),
],
),
),
@@ -118,11 +111,11 @@ class _GameResultViewState extends State<GameResultView> {
CustomWidthButton(
text: 'Save',
sizeRelativeToWidth: 0.95,
onPressed: _player != null
onPressed: _selectedPlayer != null
? () async {
bool success = await db.gameDao.setWinner(
gameId: widget.game.id,
winnerId: _player!.id,
winnerId: _selectedPlayer!.id,
);
if (!context.mounted) return;
if (success) {