made winner deselectable and added auto save on select
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m8s
Pull Request Pipeline / lint (pull_request) Successful in 2m11s

This commit is contained in:
2025-12-06 13:31:08 +01:00
parent 306a783d67
commit 697767f0de

View File

@@ -3,7 +3,6 @@ import 'package:game_tracker/core/custom_theme.dart';
import 'package:game_tracker/data/db/database.dart';
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:provider/provider.dart';
@@ -94,10 +93,24 @@ class _GameResultViewState extends State<GameResultView> {
return CustomRadioListTile(
text: allPlayers[index].name,
value: allPlayers[index],
onContainerTap: (value) {
onContainerTap: (value) async {
setState(() {
if (_selectedPlayer == value) {
_selectedPlayer = null;
} else {
_selectedPlayer = value;
}
});
if (_selectedPlayer == null) {
await db.gameDao.removeWinner(
gameId: widget.game.id,
);
} else {
await db.gameDao.setWinner(
gameId: widget.game.id,
winnerId: _selectedPlayer!.id,
);
}
},
);
},
@@ -108,36 +121,6 @@ class _GameResultViewState extends State<GameResultView> {
),
),
),
CustomWidthButton(
text: 'Save',
sizeRelativeToWidth: 0.95,
onPressed: _selectedPlayer != null
? () async {
bool success = await db.gameDao.setWinner(
gameId: widget.game.id,
winnerId: _selectedPlayer!.id,
);
if (!context.mounted) return;
if (success) {
Navigator.pop(context);
} else {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
backgroundColor: CustomTheme.boxColor,
content: const Center(
child: Text(
'Error while setting winner, please try again',
style: TextStyle(color: Colors.white),
),
),
),
);
}
setState(() {});
}
: null,
),
const SizedBox(height: 10),
],
),
),