Compare commits
3 Commits
23cdddfbd9
...
3b3d298ff5
| Author | SHA1 | Date | |
|---|---|---|---|
| 3b3d298ff5 | |||
| e1626225ac | |||
| 93ced81e7e |
@@ -43,6 +43,12 @@ class _CreateGameViewState extends State<CreateGameView> {
|
|||||||
/// List of all players from the database
|
/// List of all players from the database
|
||||||
List<Player> playerList = [];
|
List<Player> playerList = [];
|
||||||
|
|
||||||
|
/// List of players filtered based on the selected group
|
||||||
|
/// If a group is selected, this list contains all players from [playerList]
|
||||||
|
/// who are not members of the selected group. If no group is selected,
|
||||||
|
/// this list is identical to [playerList].
|
||||||
|
List<Player> filteredPlayerList = [];
|
||||||
|
|
||||||
/// The currently selected group
|
/// The currently selected group
|
||||||
Group? selectedGroup;
|
Group? selectedGroup;
|
||||||
|
|
||||||
@@ -57,6 +63,8 @@ class _CreateGameViewState extends State<CreateGameView> {
|
|||||||
/// the [ChooseRulesetView]
|
/// the [ChooseRulesetView]
|
||||||
int selectedRulesetIndex = -1;
|
int selectedRulesetIndex = -1;
|
||||||
|
|
||||||
|
/// The index of the currently selected game in [games] to mark it in
|
||||||
|
/// the [ChooseGameView]
|
||||||
int selectedGameIndex = -1;
|
int selectedGameIndex = -1;
|
||||||
|
|
||||||
/// The currently selected players
|
/// The currently selected players
|
||||||
@@ -105,6 +113,7 @@ class _CreateGameViewState extends State<CreateGameView> {
|
|||||||
Future.wait([_allGroupsFuture, _allPlayersFuture]).then((result) async {
|
Future.wait([_allGroupsFuture, _allPlayersFuture]).then((result) async {
|
||||||
groupsList = result[0] as List<Group>;
|
groupsList = result[0] as List<Group>;
|
||||||
playerList = result[1] as List<Player>;
|
playerList = result[1] as List<Player>;
|
||||||
|
filteredPlayerList = List.from(playerList);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -194,33 +203,29 @@ class _CreateGameViewState extends State<CreateGameView> {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
selectedGroupId = selectedGroup?.id ?? '';
|
selectedGroupId = selectedGroup?.id ?? '';
|
||||||
|
if (selectedGroup != null) {
|
||||||
|
filteredPlayerList = playerList
|
||||||
|
.where(
|
||||||
|
(p) => !selectedGroup!.members.any((m) => m.id == p.id),
|
||||||
|
)
|
||||||
|
.toList();
|
||||||
|
} else {
|
||||||
|
filteredPlayerList = List.from(playerList);
|
||||||
|
}
|
||||||
setState(() {});
|
setState(() {});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
FutureBuilder(
|
Expanded(
|
||||||
future: _allPlayersFuture,
|
child: PlayerSelection(
|
||||||
builder:
|
key: ValueKey(selectedGroup?.id ?? 'no_group'),
|
||||||
(BuildContext context, AsyncSnapshot<dynamic> snapshot) =>
|
initialSelectedPlayers: selectedPlayers ?? [],
|
||||||
Expanded(
|
availablePlayers: filteredPlayerList,
|
||||||
child: PlayerSelection(
|
onChanged: (value) {
|
||||||
key: ValueKey(selectedGroup?.id ?? 'no_group'),
|
setState(() {
|
||||||
initialSelectedPlayers: selectedPlayers ?? [],
|
selectedPlayers = value;
|
||||||
availablePlayers: selectedGroup == null
|
});
|
||||||
? playerList
|
},
|
||||||
: playerList
|
),
|
||||||
.where(
|
|
||||||
(p) => !selectedGroup!.members.any(
|
|
||||||
(m) => m.id == p.id,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.toList(),
|
|
||||||
onChanged: (value) {
|
|
||||||
setState(() {
|
|
||||||
selectedPlayers = value;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
CustomWidthButton(
|
CustomWidthButton(
|
||||||
text: 'Create game',
|
text: 'Create game',
|
||||||
@@ -231,7 +236,7 @@ class _CreateGameViewState extends State<CreateGameView> {
|
|||||||
Game game = Game(
|
Game game = Game(
|
||||||
name: _gameNameController.text.trim(),
|
name: _gameNameController.text.trim(),
|
||||||
createdAt: DateTime.now(),
|
createdAt: DateTime.now(),
|
||||||
group: selectedGroup!,
|
group: selectedGroup,
|
||||||
players: selectedPlayers,
|
players: selectedPlayers,
|
||||||
);
|
);
|
||||||
await db.gameDao.addGame(game: game);
|
await db.gameDao.addGame(game: game);
|
||||||
|
|||||||
@@ -62,7 +62,11 @@ class _PlayerSelectionState extends State<PlayerSelection> {
|
|||||||
if (widget.initialSelectedPlayers != null) {
|
if (widget.initialSelectedPlayers != null) {
|
||||||
// Ensures that only players available for selection are pre-selected.
|
// Ensures that only players available for selection are pre-selected.
|
||||||
selectedPlayers = widget.initialSelectedPlayers!
|
selectedPlayers = widget.initialSelectedPlayers!
|
||||||
.where((p) => widget.availablePlayers.contains(p))
|
.where(
|
||||||
|
(p) => widget.availablePlayers.any(
|
||||||
|
(available) => available.id == p.id,
|
||||||
|
),
|
||||||
|
)
|
||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user