Rules / Performance / prefer-const-border-radius
prefer-const-border-radius
lint/performance/prefer-const-border-radiusrecommendedflutter
Same as prefer-const-border-radius · Dart Code MetricsFlags BorderRadius.only(...) whose four corner radii are all equal.
When every corner uses the same Radius.circular(n),
BorderRadius.circular(n) is shorter and const-constructible, so Flutter can
canonicalize and reuse the value instead of rebuilding it. The rule fires
only when all four corners (topLeft, topRight, bottomLeft,
bottomRight) are present and their Radius.circular(...) values are
textually equal.
Invalid
example.dartdart
// Test cases for prefer-const-border-radius rule
// Flags BorderRadius.only(...) where all radii are equal
void testAllRadiiEqual() {
final border1 = BorderRadius.only(
topLeft: Radius.circular(8),
topRight: Radius.circular(8),
bottomLeft: Radius.circular(8),
bottomRight: Radius.circular(8),
);
final border2 = BorderRadius.only(
topLeft: Radius.circular(16),
topRight: Radius.circular(16),
bottomLeft: Radius.circular(16),
bottomRight: Radius.circular(16),
);
}
void testInlineAllRadiiEqual() {
final border = BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10), bottomLeft: Radius.circular(10), bottomRight: Radius.circular(10));
}
class MyWidget {
final border = BorderRadius.only(
topLeft: Radius.circular(12),
topRight: Radius.circular(12),
bottomLeft: Radius.circular(12),
bottomRight: Radius.circular(12),
);
}
void testSmallRadius() {
final border = BorderRadius.only(topLeft: Radius.circular(4), topRight: Radius.circular(4), bottomLeft: Radius.circular(4), bottomRight: Radius.circular(4));
}
BorderRadius.only() with all equal radii should use BorderRadius.circular().
9 bottomRight: Radius.circular(8),
10 );
∙
BorderRadius.only() with all equal radii should use BorderRadius.circular().
16 bottomRight: Radius.circular(16),
17 );
∙
BorderRadius.only() with all equal radii should use BorderRadius.circular().
20void testInlineAllRadiiEqual() {
21 final border = BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10), bottomLeft: Radius.circular(10), bottomRight: Radius.circular(10));
∙
BorderRadius.only() with all equal radii should use BorderRadius.circular().
24class MyWidget {
25 final border = BorderRadius.only(
∙
BorderRadius.only() with all equal radii should use BorderRadius.circular().
33void testSmallRadius() {
34 final border = BorderRadius.only(topLeft: Radius.circular(4), topRight: Radius.circular(4), bottomLeft: Radius.circular(4), bottomRight: Radius.circular(4));
∙
Valid
example.dartdart
// Good examples for prefer-const-border-radius rule
// Using BorderRadius.circular() when appropriate
void testBorderRadiusCircular() {
final border1 = BorderRadius.circular(8);
final border2 = BorderRadius.circular(16);
final border3 = BorderRadius.circular(12);
}
void testBorderRadiusOnlyWithDifferentRadii() {
final border = BorderRadius.only(
topLeft: Radius.circular(8),
topRight: Radius.circular(16),
bottomLeft: Radius.circular(8),
bottomRight: Radius.circular(4),
);
}
void testBorderRadiusByAll() {
final border = BorderRadius.all(Radius.circular(8));
}
class MyWidget {
final border1 = BorderRadius.circular(10);
final border2 = BorderRadius.only(
topLeft: Radius.circular(8),
topRight: Radius.circular(12),
);
final border3 = BorderRadius.all(Radius.circular(16));
}
How to configure
Set the severity of prefer-const-border-radius in your falcon.json:
falcon.jsonjson
{
"linter": {
"rules": {
"performance": {
"prefer-const-border-radius": "error"
}
}
}
}