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( Expanded(
child: PlayerSelection( child: PlayerSelection(
key: ValueKey(selectedGroup?.id ?? 'no_group'), key: ValueKey(selectedGroup?.id ?? 'no_group'),
initialPlayers: selectedGroup == null initialSelectedPlayers: selectedPlayers ?? [],
availablePlayers: selectedGroup == null
? playerList ? playerList
: playerList : playerList
.where( .where(

View File

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