GameResultView erstellen #62
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user