2 Commits

Author SHA1 Message Date
708157df54 Implemented leaving players in the player selection and filtering those who are in the group
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m11s
Pull Request Pipeline / lint (pull_request) Successful in 2m12s
2025-12-07 22:15:19 +01:00
f1f3fd7b6e Fixed deselecting game bug 2025-12-07 22:03:28 +01:00
2 changed files with 25 additions and 10 deletions

View File

@@ -141,14 +141,17 @@ class _CreateGameViewState extends State<CreateGameView> {
),
),
);
if (selectedGameIndex != -1) {
setState(() {
setState(() {
if (selectedGameIndex != -1) {
print('selectedGameIndex: $selectedGameIndex');
selectedRuleset = games[selectedGameIndex].$3;
selectedRulesetIndex = rulesets.indexWhere(
(r) => r.$1 == selectedRuleset,
);
});
}
} else {
selectedRuleset = null;
}
});
},
),
ChooseTile(
@@ -193,7 +196,8 @@ class _CreateGameViewState extends State<CreateGameView> {
Expanded(
child: PlayerSelection(
key: ValueKey(selectedGroup?.id ?? 'no_group'),
initialPlayers: selectedGroup == null
initialSelectedPlayers: selectedPlayers ?? [],
availablePlayers: selectedGroup == null
? playerList
: playerList
.where(

View File

@@ -11,12 +11,14 @@ import 'package:provider/provider.dart';
class PlayerSelection extends StatefulWidget {
final Function(List<Player> value) onChanged;
final List<Player> initialPlayers;
final List<Player> availablePlayers;
final List<Player>? initialSelectedPlayers;
const PlayerSelection({
super.key,
required this.onChanged,
this.initialPlayers = const [],
this.availablePlayers = const [],
this.initialSelectedPlayers,
});
@override
@@ -51,10 +53,19 @@ class _PlayerSelectionState extends State<PlayerSelection> {
suggestedPlayers = skeletonData;
_allPlayersFuture.then((loadedPlayers) {
setState(() {
if (widget.initialPlayers.isNotEmpty) {
allPlayers = [...widget.initialPlayers];
suggestedPlayers = [...widget.initialPlayers];
// If a list of available players is provided, use that list.
if (widget.availablePlayers.isNotEmpty) {
allPlayers = [...widget.availablePlayers];
suggestedPlayers = [...widget.availablePlayers];
if (widget.initialSelectedPlayers != null) {
// Ensures that only players available for selection are pre-selected.
selectedPlayers = widget.initialSelectedPlayers!
.where((p) => widget.availablePlayers.contains(p))
.toList();
}
} else {
// Otherwise, use the loaded players from the database.
loadedPlayers.sort((a, b) => a.name.compareTo(b.name));
allPlayers = [...loadedPlayers];
suggestedPlayers = [...loadedPlayers];