首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从数组中删除现有项

如何从数组中删除现有项
EN

Stack Overflow用户
提问于 2019-05-21 00:24:04
回答 2查看 463关注 0票数 0

我的app.Something中有四个按钮,如下所示

代码语言:javascript
复制
List<String> players = [
{'name': 'player 1'},
{'name': 'player 2'},
{'name': 'player 3'},
{'name': 'player 4'}
];

我正在迭代一张地图

代码语言:javascript
复制
return Row(
        children: players
            .map((player) => RaisedButton(
                  onPressed: () {selectPlayer(player)}
                  child: Text(player['name']),
                ))
            .toList());

我的初始状态如下所示:

代码语言:javascript
复制
  void initState() {
    super.initState();

    _selectedPlayers = [];
  }

selectPlayer()看起来像这样:

代码语言:javascript
复制
  selectPlayer(player) {
    if (_selectedPlayers.contains(player)) {
      _selectedPlayers.remove(player);
    } else {
      _selectedPlayers.add(player);
    }

    List newSelectedPlayers = _selectedPlayers;
    setState(() {
      _selectedPlayers = newSelectedPlayers;
    });
  }

如果我在selectPlayerprint(newSelectedPlayers)中删除setState

这一切都会相应地工作。但是我需要知道player是否已经被添加/删除,因此这就是我更新状态的原因。

如果,我执行setState,那么,在build中,我尝试记录_selectedPlayers,它们只是被添加,而不是被删除,即使它们不应该被删除……或者我错过了什么..。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-22 21:10:56

从构建上下文中删除此List<String> players = ['player 1', 'player 2', 'player 3', 'player 4'];,将其放在您的类名下面;

票数 1
EN

Stack Overflow用户

发布于 2019-05-21 00:47:36

您实际上不需要第二个newselectedplayer变量,只需在您的selectplayer函数中执行此操作即可

代码语言:javascript
复制
setstate(() {
  if (_selectedPlayers.contains(player)) {
    _selectedPlayers.remove(player);
  } else {
    _selectedPlayers.add(player);
  }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56224789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档