Dart Academy · 课时

集合中的 if 和 for

按条件和循环构建列表

第 4 / 4 课13 个步骤

集合中的 if 和 for 是 CoddyKit 上的免费 Dart Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Dart Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Dart Academy 课程共包含 4 节课。

字面量中的逻辑

有时列表的内容取决于某个条件。Dart 允许您将条件判断直接放入集合字面量中,从而在一个地方构建集合。

集合条件判断

集合条件判断只会在条件为真时添加一个元素。如果没有满足条件的情况,该位置就不会贡献任何内容。

var nav = ['Home', if (loggedIn) 'Profile'];

带有否则分支的条件判断

您可以添加否则分支,在两个元素之间进行选择。两个元素中始终只有一个会进入集合,不会同时加入。

var tags = [if (vip) 'Gold' else 'Standard'];

无需大括号

与语句级条件判断不同,集合条件判断不需要大括号,也不需要分号。它会生成一个元素,而不是运行一个代码块。

集合循环

集合循环可以在字面量内部通过循环生成元素。每次循环都会添加循环体产生的内容。

var doubled = [for (var n in nums) n * 2];

类似映射,但直接内联

如果您已经位于字面量中,集合循环通常可以替代映射调用。对于简单转换,这样写起来更加直接。

混合条件判断与循环

您可以将两者组合起来:先循环,再使用条件判断进行筛选。它们可以在一个富有表现力的字面量中构建出经过整理的列表。

var evens = [for (var n in nums) if (n.isEven) n];

不只适用于列表

集合条件判断和循环同样适用于集合和映射字面量。相同的简洁语法可以构建这三种集合类型。

var m = {for (var u in users) u.id: u.name};

与展开配合使用

您可以将这些功能与展开运算符混合使用。在一个字面量中内联一些项目、展开另一个集合,并添加条件判断。

var x = [...base, if (extra) 'plus'];

为什么优于事后构建

预先构建集合可以保持代码的声明式。这样就不需要先创建空列表,再通过单独的语句向其中添加项目。

非常适合用户界面列表

这在 Flutter 中尤其有用,因为子元素列表经常需要根据条件或数据显示控件。字面量依然整洁易读。🧩

快速检查

当集合条件判断的条件为假且没有提供否则分支时,会发生什么?

回顾

集合条件判断可以有条件地添加元素,集合循环可以在循环中生成元素,而且它们都能直接用于列表、集合和映射字面量。🎯

免费开始

用 AI 导师学习 Dart — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「集合中的 if 和 for」课时是免费的吗?

是的 — 「集合中的 if 和 for」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Dart Academy 课程的其余内容,请升级到 CoddyKit PRO。 Dart Academy 课程共包含 4 节课。

「集合中的 if 和 for」这节课中我会学到什么?

按条件和循环构建列表 你通过在浏览器中直接运行的动手代码来练习 Dart Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Dart Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Dart Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「集合中的 if 和 for」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Dart Academy 课中编写并运行代码吗?

能。每节 Dart Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 级联运算符(..)
  2. 空值短路级联(?..)
  3. 展开和空值感知展开
  4. 集合中的 if 和 for
← 返回 Dart Academy