Why this matters
`@immutable` classes should have only `final` fields, and constructor parameters that are literals should be `const` to prevent accidental modifications.
Ensure that all literal values passed to constructors of `@immutable` classes are marked as `const` to prevent unnecessary object creation.
`@immutable` classes should have only `final` fields, and constructor parameters that are literals should be `const` to prevent accidental modifications.
Side-by-side examples engineers can pattern-match during review.
import 'package:meta/meta.dart';
@immutable
class MultiDimensionalPoint {
final List<int> coordinates;
MultiDimensionalPoint(this.coordinates);
}
void main() {
final p1 = MultiDimensionalPoint([1, 2, 3]); // Non compliant
}import 'package:meta/meta.dart';
@immutable
class MultiDimensionalPoint {
final List<int> coordinates;
MultiDimensionalPoint(this.coordinates);
}
void main() {
final p1 = MultiDimensionalPoint(const [1, 2, 3]);
}import 'package:meta/meta.dart';
@immutable
class MultiDimensionalPoint {
final List<int> coordinates;
MultiDimensionalPoint(this.coordinates);
}
void main() {
final p1 = MultiDimensionalPoint([1, 2, 3]); // Non compliant
}import 'package:meta/meta.dart';
@immutable
class MultiDimensionalPoint {
final List<int> coordinates;
MultiDimensionalPoint(this.coordinates);
}
void main() {
final p1 = MultiDimensionalPoint(const [1, 2, 3]);
}From the same buckets as this rule.
All static JS/CSS/font/image files MUST use content-hashed filenames (e.g., app.9c1a7b.js) and be served with "Cache-Control: public, max-age=31536000, immutable". HTML and other non-fingerprinted documents MUST be served with "Cache-Control: no-cache" (or equivalent) to enable conditional revalidation.