Loading...
Loading...
Apply Effective Dart usage patterns for cleaner and more efficient code.
npx skill4agent add dart-lang/skills dart-idiomatic-usage.length.cast()+// BAD
var s1 = 'Hello ' + name + '!';
var s2 = 'Hi, ${name}!';
var s3 = 'Part 1 ' +
'Part 2';
// GOOD
var s1 = 'Hello $name!';
var s2 = 'Hi, $name!';
var s3 = 'Part 1 '
'Part 2';MapSetList......?iffor.add().addAll()// BAD
var addresses = Map<String, Address>();
var counts = Set<int>();
var args = <String>[];
args.addAll(options);
if (flag != null) args.add(flag);
// GOOD
var addresses = <String, Address>{};
var counts = <int>{};
var args = [
...options,
if (flag != null) flag,
];.length0.isEmpty.isNotEmpty// BAD
if (items.length == 0) return;
if (items.length > 0) process(items);
// GOOD
if (items.isEmpty) return;
if (items.isNotEmpty) process(items);Mapmap.forEach((k, v) { ... })Iterableiterable.forEach(functionName)Iterablefor-in// BAD
people.forEach((person) {
person.greet();
});
// GOOD
for (final person in people) {
person.greet();
}
// GOOD (Tear-off)
people.forEach(print);.whereType<T>().where((e) => e is T).toList()List<T>.from(iterable).cast<T>()List<T>.from()// BAD
var ints = objects.where((e) => e is int).cast<int>();
var copy = List.from(iterable); // when type change isn't needed
var casted = objects.cast<int>();
// GOOD
var ints = objects.whereType<int>();
var copy = iterable.toList();
var casted = List<int>.from(objects); // Eager cast+.cast().cast()List.from().cast()List.from()Map()Set()List().length == 0.length > 0Iterable.forEach().cast()List.from().map<T>()where((e) => e is T)whereType<T>()+$variable....add().addAll()