у меня в приложении четыре кнопки. Что-то вроде этого
List<String> players = [
{'name': 'player 1'},
{'name': 'player 2'},
{'name': 'player 3'},
{'name': 'player 4'}
];
Я перебираю карту
return Row(
children: players
.map((player) => RaisedButton(
onPressed: () {selectPlayer(player)}
child: Text(player['name']),
))
.toList());
мое начальное состояние выглядит так:
void initState() {
super.initState();
_selectedPlayers = [];
}
selectPlayer()
выглядит так:
selectPlayer(player) {
if (_selectedPlayers.contains(player)) {
_selectedPlayers.remove(player);
} else {
_selectedPlayers.add(player);
}
List newSelectedPlayers = _selectedPlayers;
setState(() {
_selectedPlayers = newSelectedPlayers;
});
}
Если я уберу setState
в selectPlayer
и print(newSelectedPlayers)
,
все это работает соответственно. Но мне нужно знать, был ли игрок добавлен / удален, и поэтому я обновляю состояние.
Если я делаю setState
, то в build
я пытаюсь войти _selectedPlayers
, они просто добавляются, а не удаляются, даже если они не должны ... или я что-то упускаю. ..
Спасибо!