MVP #141

Merged
flixcoo merged 705 commits from development into main 2026-01-09 12:55:50 +00:00
2 changed files with 18 additions and 6 deletions
Showing only changes of commit 708157df54 - Show all commits

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];