Loading...
Loading...
Master core and advanced language syntax for expressive and type-safe code.
npx skill4agent add dart-lang/skills dart-language-syntaxvarfinalconstlate_final name = 'Bob'; // Immutable
var count = 0; // Obvious type
late final String expensiveResult = computeExpensiveValue();
// Wildcard usage
for (var _ in list) {
print('Iterating without binding');
}required// Named parameters with required and default values
void configure({required String id, bool verbose = false}) { ... }
// Tear-offs
final charCodes = [68, 97, 114, 116];
final buffer = StringBuffer();
charCodes.forEach(buffer.write); // Method tear-off(...)// Returning a record
(String, int) fetchUserInfo(Map<String, dynamic> json) {
return (json['name'] as String, json['age'] as int);
}
// Returning a record with named fields
({String name, int age}) fetchNamedUserInfo() {
return (name: 'Dash', age: 10);
}switchwhenif-case// Destructuring a record
var (name, age) = fetchUserInfo(json);
// Switch expression with algebraic data types and guards
double calculateArea(Shape shape) => switch (shape) {
Square(length: final l) when l > 0 => l * l,
Circle(radius: final r) => math.pi * r * r,
_ => throw ArgumentError('Invalid shape'),
};
// JSON Validation using if-case
if (json case {'user': [String name, int age]}) {
print('User $name is $age years old.');
} else {
// Handle invalid JSON structure
}<T>extends// Restricting to non-nullable types
class Cache<T extends Object> {
final Map<String, T> _storage = {};
T? getByKey(String key) => _storage[key];
void setByKey(String key, T value) => _storage[key] = value;
}
// Generic method
T first<T>(List<T> items) {
if (items.isEmpty) throw StateError('No elements');
return items[0];
}extension type ButtonItem._(({String label, void Function() onPressed}) _) {
ButtonItem({required String label, required void Function() onPressed})
: this._((label: label, onPressed: onPressed));
String get label => _.label;
void Function() get onPressed => _.onPressed;
}isvardynamic______list.forEach((e) => print(e))list.forEach(print)isif-casedart-idiomatic-usage