prefer-null-aware-operators

Same as prefer_null_aware_operators in Dart lints

Path
lint/complexity/prefer-null-aware-operators
Default
On (recommended)
Origin
Dart lints
Rule
392 of 512
recommended

Flags x == null ? null : x.y (and the inverted x != null ? x.y : null).

Guarding a member access with a null-check ternary is what the ?. null-aware operator does: x?.y. It is shorter and evaluates the receiver only once. The rule fires when one branch is the null literal and the other is a field access, index, or method call whose receiver matches the checked operand (whitespace-insensitive).

Invalid

example.dartdart
void f(C? a, C? b) {
  var r1 = a == null ? null : a.field;
  var r2 = a != null ? a.field : null;
  var r3 = a == null ? null : a.method();
  var r4 = null == a ? null : a.field;
  var r5 = b == null ? null : b.method();
  print('$r1 $r2 $r3 $r4 $r5');
}

class C {
  int? field;
  int method() => 0;
}
Prefer using the null-aware operator `?.`.
1void f(C? a, C? b) {
2 var r1 = a == null ? null : a.field;
Prefer using the null-aware operator `?.`.
2 var r1 = a == null ? null : a.field;
3 var r2 = a != null ? a.field : null;
Prefer using the null-aware operator `?.`.
3 var r2 = a != null ? a.field : null;
4 var r3 = a == null ? null : a.method();
Prefer using the null-aware operator `?.`.
4 var r3 = a == null ? null : a.method();
5 var r4 = null == a ? null : a.field;
Prefer using the null-aware operator `?.`.
5 var r4 = null == a ? null : a.field;
6 var r5 = b == null ? null : b.method();

Valid

example.dartdart
void f(C? a, C? b) {
  var r1 = a == null ? a.field : null;
  var r2 = a == null ? null : b.field;
  var r3 = a != null ? null : a.field;
  var r4 = a == null ? 0 : a.field;
  var r5 = a?.field;
  var r6 = a == null ? null : a;
  print('$r1 $r2 $r3 $r4 $r5 $r6');
}

class C {
  int? field;
  int method() => 0;
}

Configure prefer-null-aware-operators

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

falcon.jsonjson
{
  "linter": {
    "rules": {
      "complexity": {
        "prefer-null-aware-operators": "error"
      }
    }
  }
}

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

example.dartdart
// falcon-ignore lint/complexity/prefer-null-aware-operators: <reason>