i have four buttons in my app.Something like this
List<String> players = [
{'name': 'player 1'},
{'name': 'player 2'},
{'name': 'player 3'},
{'name': 'player 4'}
];
I'm iterating over a map
return Row(
children: players
.map((player) => RaisedButton(
onPressed: () {selectPlayer(player)}
child: Text(player['name']),
))
.toList());
my initial state looks like this:
void initState() {
super.initState();
_selectedPlayers = [];
}
selectPlayer()
looks like this:
selectPlayer(player) {
if (_selectedPlayers.contains(player)) {
_selectedPlayers.remove(player);
} else {
_selectedPlayers.add(player);
}
List newSelectedPlayers = _selectedPlayers;
setState(() {
_selectedPlayers = newSelectedPlayers;
});
}
If i remove setState
in selectPlayer
, and print(newSelectedPlayers)
,
it all works accordingly. But i need to know if player has been added/removed, and therefore that's why i update state.
If, i do setState
, then, in build
, i try to log _selectedPlayers
, they just get added, never removed, even though they shouldn't... or i'm missing something...
Thanks!
Remove this List<String> players = ['player 1', 'player 2', 'player 3', 'player 4'];
from inside the build context put it right under your class name;