Flutter Dart 集合还有一些特殊的用法,比如使用展开操作符(而且同时支持 ? 操作符判断是否为空)将一个集合加入到另一个集合。
同时还支持结合 if 和 for 来控制元素的加入。
// 推荐用法 var arguments = [ ...options, command, ...?modeFlags, for (var path in filePaths) if (path.endsWith('.dart')) path.replaceAll('.dart', '.js') ]; // 不推荐 var arguments = <String>[]; arguments.addAll(options); arguments.add(command); if (modeFlags != null) arguments.addAll(modeFlags); arguments.addAll(filePaths .where((path) => path.endsWith('.dart')) .map((path) => path.replaceAll('.dart', '.js')));
上面的推荐用法其实除了展开操作符以外,使用 if 和 for 的并不常见。说实话,个人挺不习惯这种写法的,感觉可读性并不高。