Dart 中带有条件的列表长度

jul*_*n.a 2 list dart

有没有办法得到 4 而不是 2 结果?

List<String> test = [
      'first',
      'second',
      if (false) 'third',
      if (false) 'fourth',
    ];

    print('length: ' + test.length.toString());
Run Code Online (Sandbox Code Playgroud)

jul*_*101 5

列表的 length 属性返回列表中元素的数量。在您的示例中,您仅插入两个值(由于条件原因),因此 4 的长度没有意义,并且当您想要迭代列表时会出现问题。

但是,如果条件为 false,您可以添加 null 元素,如下所示:

void main() {
  List<String> list = [
    'first',
    'second',
    (false) ? 'third' : null,
    (false) ? 'fourth' : null,
  ];

  final listLengthIncludingConditions = list.length;

  list.removeWhere((x) => x != null);

  print('Number of possible elements in list: $listLengthIncludingConditions'); // 4
  print('Number of elements in list: ${list.length}'); // 2
}
Run Code Online (Sandbox Code Playgroud)

然后您可以保存长度并删除空元素。