我的应用程序中有四个按钮。类似这样的东西
List<String> players = [
{'name': 'player 1'},
{'name': 'player 2'},
{'name': 'player 3'},
{'name': 'player 4'}
];
我正在遍历 map
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;
});
}
如果我删除 selectPlayer
中的 setState
和 print(newSelectedPlayers)
,
这一切都相应地工作。但我需要知道播放器是否已添加/删除,因此这就是我更新状态的原因。
如果我执行 setState
,那么,在 build
中,我尝试记录 _selectedPlayers
,它们只是被添加,从未被删除,甚至尽管他们不应该……或者我遗漏了什么……
谢谢!
最佳答案
删除此 List<String> players = ['player 1', 'player 2', 'player 3', 'player 4'];
从构建上下文中将它放在你的类名下面;
关于list - 如何从数组中删除现有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56224789/