Compare commits
2 Commits
7bc75d60a7
...
708157df54
| Author | SHA1 | Date | |
|---|---|---|---|
| 708157df54 | |||
| f1f3fd7b6e |
@@ -141,14 +141,17 @@ class _CreateGameViewState extends State<CreateGameView> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
if (selectedGameIndex != -1) {
|
setState(() {
|
||||||
setState(() {
|
if (selectedGameIndex != -1) {
|
||||||
|
print('selectedGameIndex: $selectedGameIndex');
|
||||||
selectedRuleset = games[selectedGameIndex].$3;
|
selectedRuleset = games[selectedGameIndex].$3;
|
||||||
selectedRulesetIndex = rulesets.indexWhere(
|
selectedRulesetIndex = rulesets.indexWhere(
|
||||||
(r) => r.$1 == selectedRuleset,
|
(r) => r.$1 == selectedRuleset,
|
||||||
);
|
);
|
||||||
});
|
} else {
|
||||||
}
|
selectedRuleset = null;
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
ChooseTile(
|
ChooseTile(
|
||||||
@@ -193,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(
|
||||||
|
|||||||
@@ -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];
|
||||||
|
|||||||
Reference in New Issue
Block a user