Fix: SetState Error
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 39s
Pull Request Pipeline / lint (pull_request) Successful in 45s

This commit is contained in:
2026-03-07 22:11:51 +01:00
parent 27c6d8b293
commit 7810443a00

View File

@@ -110,7 +110,9 @@ class _PlayerSelectionState extends State<PlayerSelection> {
final bool nameMatches = player.name.toLowerCase().contains( final bool nameMatches = player.name.toLowerCase().contains(
value.toLowerCase(), value.toLowerCase(),
); );
final bool isNotSelected = !selectedPlayers.any((p) => p.id == player.id); final bool isNotSelected = !selectedPlayers.any(
(p) => p.id == player.id,
);
return nameMatches && isNotSelected; return nameMatches && isNotSelected;
}).toList(); }).toList();
} }
@@ -224,49 +226,53 @@ class _PlayerSelectionState extends State<PlayerSelection> {
db.playerDao.getAllPlayers(), db.playerDao.getAllPlayers(),
Future.delayed(Constants.MINIMUM_SKELETON_DURATION), Future.delayed(Constants.MINIMUM_SKELETON_DURATION),
]).then((results) => results[0] as List<Player>); ]).then((results) => results[0] as List<Player>);
if (mounted) {
_allPlayersFuture.then((loadedPlayers) {
setState(() {
// If a list of available players is provided (even if empty), use that list.
if (widget.availablePlayers != null) {
widget.availablePlayers!.sort((a, b) => a.name.compareTo(b.name));
allPlayers = [...widget.availablePlayers!];
suggestedPlayers = [...allPlayers];
if (widget.initialSelectedPlayers != null) { _allPlayersFuture.then((loadedPlayers) {
// Ensures that only players available for selection are pre-selected. if (!mounted) return;
selectedPlayers = widget.initialSelectedPlayers! setState(() {
.where( // If a list of available players is provided (even if empty), use that list.
(p) => widget.availablePlayers!.any( if (widget.availablePlayers != null) {
(available) => available.id == p.id, widget.availablePlayers!.sort((a, b) => a.name.compareTo(b.name));
), allPlayers = [...widget.availablePlayers!];
) suggestedPlayers = [...allPlayers];
.toList();
} if (widget.initialSelectedPlayers != null) {
} else { // Ensures that only players available for selection are pre-selected.
// Otherwise, use the loaded players from the database. selectedPlayers = widget.initialSelectedPlayers!
loadedPlayers.sort((a, b) => a.name.compareTo(b.name)); .where(
allPlayers = [...loadedPlayers]; (p) => widget.availablePlayers!.any(
if (widget.initialSelectedPlayers != null) { (available) => available.id == p.id,
// Excludes already selected players from the suggested players list. ),
suggestedPlayers = loadedPlayers.where((p) => !widget.initialSelectedPlayers!.any((ip) => ip.id == p.id)).toList(); )
// Ensures that only players available for selection are pre-selected. .toList();
selectedPlayers = widget.initialSelectedPlayers!
.where(
(p) => allPlayers.any(
(available) => available.id == p.id,
),
)
.toList();
} else {
// If no initial selection, all loaded players are suggested.
suggestedPlayers = [...loadedPlayers];
}
} }
isLoading = false; } else {
}); // Otherwise, use the loaded players from the database.
loadedPlayers.sort((a, b) => a.name.compareTo(b.name));
allPlayers = [...loadedPlayers];
if (widget.initialSelectedPlayers != null) {
// Excludes already selected players from the suggested players list.
suggestedPlayers = loadedPlayers
.where(
(p) => !widget.initialSelectedPlayers!.any(
(ip) => ip.id == p.id,
),
)
.toList();
// Ensures that only players available for selection are pre-selected.
selectedPlayers = widget.initialSelectedPlayers!
.where(
(p) => allPlayers.any((available) => available.id == p.id),
)
.toList();
} else {
// If no initial selection, all loaded players are suggested.
suggestedPlayers = [...loadedPlayers];
}
}
isLoading = false;
}); });
} });
} }
/// Adds a new player to the database from the search bar input. /// Adds a new player to the database from the search bar input.