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

This commit is contained in:
2025-12-07 22:15:19 +01:00
parent f1f3fd7b6e
commit 708157df54
2 changed files with 18 additions and 6 deletions

View File

@@ -196,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];