Dart 展开运算符说“如果它不为空,则将其放入列表中”

Gaz*_*kus 2 dart

是否有 Dart 点差运算符和空感知运算符的组合可以做到这一点?

[
  1, 
  ...twoOrNull() // this will be inserted only if it's null. something else than the ... operator will be here. 
  3, 
]
Run Code Online (Sandbox Code Playgroud)

所以列表将是[1, 2, 3][1, 3]。我想twoOrNull()可以返回[2]or [],但如果它可以返回2or就好了null

这可能不引入变量吗?

jam*_*lin 5

有一个可识别空值的扩展运算符 ( ...?),但您的twoOrNull()函数必须返回[2]null;扩展运算符在另一个集合文字中扩展一个可迭代对象,并且“扩展”一个int.

还有 Dart 的 collection-if 构造,但它需要调用twoOrNull()两次或将结果保存在变量中:

[
  1, 
  if (twoOrNull() != null) twoOrNull(),
  3, 
]
Run Code Online (Sandbox Code Playgroud)

请参阅Dart 语言教程中的列表部分,了解有关传播和收集-if的更多信息。