prefer-center-over-align

Group
Style
Path
lint/style/prefer-center-over-align
Default
Off, opt in
Origin
Falcon
Domain
flutter
Rule
321 of 512
flutter

Prefers Center over an Align whose alignment is known to be centered.

Reports Flutter's unnamed Align constructor with omitted alignment, Alignment.center, or a Flutter Alignment(0, 0) constructor. key, child, widthFactor, and heightFactor are preserved by Center and remain allowed, including an absent child. Other arguments, null or unknown alignments, and shadowed constructors or alignment names are ignored.

Invalid

example.dartdart
import 'package:flutter/material.dart';
import 'package:flutter/material.dart' as ui;

typedef LayoutAlign = Align;

void examples(Widget child) {
  Align();
  const Align();
  new Align(child: child);
  ui.Align(alignment: ui.Alignment.center, child: child);
  const ui.Align(alignment: ui.Alignment(0, 0));
  Align(alignment: Alignment(0.0, 0), child: child);
  Align(widthFactor: 2, heightFactor: 3, child: child);
  Align(alignment: Alignment.center, widthFactor: 0.5, heightFactor: 2, child: child);
  LayoutAlign(key: const Key('center'), child: child);
  new ui.Align(alignment: new ui.Alignment(0, 0));
  const Align(widthFactor: 2, heightFactor: 3);
}
Prefer `Center` over an `Align` with centered alignment.
6void examples(Widget child) {
7 Align();
Prefer `Center` over an `Align` with centered alignment.
7 Align();
8 const Align();
Prefer `Center` over an `Align` with centered alignment.
8 const Align();
9 new Align(child: child);
Prefer `Center` over an `Align` with centered alignment.
9 new Align(child: child);
10 ui.Align(alignment: ui.Alignment.center, child: child);
Prefer `Center` over an `Align` with centered alignment.
10 ui.Align(alignment: ui.Alignment.center, child: child);
11 const ui.Align(alignment: ui.Alignment(0, 0));
Prefer `Center` over an `Align` with centered alignment.
11 const ui.Align(alignment: ui.Alignment(0, 0));
12 Align(alignment: Alignment(0.0, 0), child: child);
Prefer `Center` over an `Align` with centered alignment.
12 Align(alignment: Alignment(0.0, 0), child: child);
13 Align(widthFactor: 2, heightFactor: 3, child: child);
Prefer `Center` over an `Align` with centered alignment.
13 Align(widthFactor: 2, heightFactor: 3, child: child);
14 Align(alignment: Alignment.center, widthFactor: 0.5, heightFactor: 2, child: child);
Prefer `Center` over an `Align` with centered alignment.
14 Align(alignment: Alignment.center, widthFactor: 0.5, heightFactor: 2, child: child);
15 LayoutAlign(key: const Key('center'), child: child);
Prefer `Center` over an `Align` with centered alignment.
15 LayoutAlign(key: const Key('center'), child: child);
16 new ui.Align(alignment: new ui.Alignment(0, 0));
Prefer `Center` over an `Align` with centered alignment.
16 new ui.Align(alignment: new ui.Alignment(0, 0));
17 const Align(widthFactor: 2, heightFactor: 3);

Valid

example.dartdart
import 'package:flutter/material.dart';
import 'package:flutter/material.dart' as ui;

typedef LayoutAlign = Align;

void examples(Widget child, AlignmentGeometry value) {
  Align(alignment: Alignment.topLeft, child: child);
  Align(alignment: Alignment(0, 1), child: child);
  Align(alignment: Alignment(1, 0), child: child);
  Align(alignment: value, child: child);
  Center(child: child);
}

Object parameterShadow(dynamic Align, Widget child) => Align(child: child);
Object prefixShadow(dynamic ui, Widget child) => ui.Align(child: child);
Object aliasShadow(dynamic LayoutAlign, Widget child) => LayoutAlign(child: child);

void localShadow(dynamic factory, Widget child) {
  final Align = factory;
  Align(child: child);
}

void alignmentShadow(dynamic Alignment, Widget child) {
  Align(alignment: Alignment.center, child: child);
  Align(alignment: Alignment(0, 0), child: child);
}

void alignmentPrefixShadow(dynamic ui, Widget child) {
  Align(alignment: ui.Alignment.center, child: child);
  Align(alignment: ui.Alignment(0, 0), child: child);
}

Configure prefer-center-over-align

Set its severity in falcon.json. See the configuration guide.

falcon.jsonjson
{
  "linter": {
    "rules": {
      "style": {
        "prefer-center-over-align": "error"
      }
    }
  }
}

Or silence one occurrence with a suppression comment; the reason is required.

example.dartdart
// falcon-ignore lint/style/prefer-center-over-align: <reason>