获取布尔列表中第一个真值的索引

Posted

技术标签:

【中文标题】获取布尔列表中第一个真值的索引【英文标题】:Get index of first true value in list of bool 【发布时间】:2020-02-23 23:57:49 【问题描述】:
     ListView(
    physics: NeverScrollableScrollPhysics(),
    children: <Widget>[
      ToolControlButton(
        onPressed: () => onControlPress(0),
        isSelected: selectedControl[0],
        icon: Icons.category,
        text: 'Option1',
      ),
      ToolControlButton(
        onPressed: () => onControlPress(1),
        isSelected: selectedControl[1],
        icon: Icons.category,
        text: 'Option2',
      ),
      ToolControlButton(
        onPressed: () => onControlPress(2),
        isSelected: selectedControl[2],
        icon: Icons.category,
        text: 'Option3',
      ),
      ToolControlButton(
        onPressed: () => onControlPress(3),
        isSelected: selectedControl[3],
        icon: Icons.category,
        text: 'Option4',
      )
    ],
  )

我有布尔值列表

List<bool> selectedControl = [true, false, false, false];

和小部件列表

List<Widget> cont = [
Container(color: Colors.red),
Container(color: Colors.green,
Container(color: Colors.orange),
Container(color: Colors.blue)
];

我想在 selectedControl 具有真值的索引处显示 cont 小部件。到目前为止,这是我设法做到的,并且有效。有没有更好的方法来达到这个目的?

return cont[selectedControl.indexWhere((selected) => selected == true)],

【问题讨论】:

为什么不只保留所选项目的索引而不是布尔值列表? 嗨,尤金。我刚刚编辑了我的问题。基本上我正在使用 selectedControl 列表在屏幕左侧选择列表视图中的列表图块,据此我可以在右侧显示适当的窗口,这是容器列表。希望清楚 【参考方案1】:
return cont[selectedControl.indexWhere((selected) => selected == true)];

这将起作用,因为这与firstWhere 正好相反,其中满足条件的第一个元素indexWhere 等价于 firstWhere,但它只返回 first 满足条件的索引。但是,如果 none selected 为 true,则 indexWhere 返回 -1,这将导致越界异常。

你可以这样写代码:

final selectedControlIndex = selectedControl.indexWhere((selected) => selected);
return selectedControlIndex >= 0? cont[selectedControlIndex] : Container();

【讨论】:

感谢 Shababb。我不确定找到列表中第一个真值的索引是否最适合这种情况。再次感谢您 欢迎。不要忘记为答案投票以获得更高的知名度。谢谢。

以上是关于获取布尔列表中第一个真值的索引的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中,如何找到排序列表中第一个大于阈值的值的索引?

获取向量中第一个“真”的索引

获取表中第一个可用索引,包括0

列表中的索引元素[重复]

获取 pandas 布尔系列为 True 的索引列表

Dart如何在列表中找到真值的索引