avoid-late-context

Path
lint/correctness/avoid-late-context
Default
On (recommended)
Origin
Falcon
Domain
flutter
Rule
81 of 512
recommendedflutter

Avoid storing BuildContext in late fields or reading it in late initializers. Resolved Flutter context values are checked rather than identifier spelling.

Invalid

example.dartdart
import 'package:flutter/material.dart';
class S extends State<StatefulWidget> {
late final value0 = context;
late BuildContext value1;
late final value2 = this.context;
late final value3 = Theme.of(context);
late final BuildContext value4 = context;
}
Avoid storing or accessing `BuildContext` in a `late` field initializer.
2class S extends State<StatefulWidget> {
3late final value0 = context;
Avoid storing or accessing `BuildContext` in a `late` field initializer.
3late final value0 = context;
4late BuildContext value1;
Avoid storing or accessing `BuildContext` in a `late` field initializer.
4late BuildContext value1;
5late final value2 = this.context;
Avoid storing or accessing `BuildContext` in a `late` field initializer.
5late final value2 = this.context;
6late final value3 = Theme.of(context);
Avoid storing or accessing `BuildContext` in a `late` field initializer.
6late final value3 = Theme.of(context);
7late final BuildContext value4 = context;

Valid

example.dartdart
import 'package:flutter/material.dart';
class S extends State<StatefulWidget> {
late final value0 = 0;
late final value1 = 'text';
late final value2 = <String>[];
BuildContext? value3;
BuildContext get value4 => context;
}

Configure avoid-late-context

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

falcon.jsonjson
{
  "linter": {
    "rules": {
      "correctness": {
        "avoid-late-context": "error"
      }
    }
  }
}

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

example.dartdart
// falcon-ignore lint/correctness/avoid-late-context: <reason>