use-closest-build-context

Path
lint/correctness/use-closest-build-context
Default
On (recommended)
Origin
Falcon
Domain
flutter
Rule
483 of 512
recommendedflutter

Use the nearest BuildContext parameter inside nested callbacks. Only resolved Flutter contexts are checked, avoiding unrelated variables named context.

Invalid

example.dartdart
import 'package:flutter/material.dart';
void example(BuildContext outer) {
final callback0 = (BuildContext inner) { use(outer); };
final callback1 = (BuildContext inner) => use(outer);
final callback2 = (BuildContext inner) { return Theme.of(outer); };
void callback3(BuildContext inner) { use(outer); }
final callback4 = (BuildContext inner) { final nested = (BuildContext closest) { use(inner); }; };
}
Use the closest `BuildContext` parameter instead of an outer context.
2void example(BuildContext outer) {
3final callback0 = (BuildContext inner) { use(outer); };
Use the closest `BuildContext` parameter instead of an outer context.
3final callback0 = (BuildContext inner) { use(outer); };
4final callback1 = (BuildContext inner) => use(outer);
Use the closest `BuildContext` parameter instead of an outer context.
4final callback1 = (BuildContext inner) => use(outer);
5final callback2 = (BuildContext inner) { return Theme.of(outer); };
Use the closest `BuildContext` parameter instead of an outer context.
5final callback2 = (BuildContext inner) { return Theme.of(outer); };
6void callback3(BuildContext inner) { use(outer); }
Use the closest `BuildContext` parameter instead of an outer context.
6void callback3(BuildContext inner) { use(outer); }
7final callback4 = (BuildContext inner) { final nested = (BuildContext closest) { use(inner); }; };

Valid

example.dartdart
import 'package:flutter/material.dart';
void example(BuildContext outer) {
final callback0 = (BuildContext inner) { use(inner); };
final callback1 = (BuildContext inner) => use(inner);
final callback2 = (BuildContext inner) { return Theme.of(inner); };
void callback3(BuildContext inner) { use(inner); }
final callback4 = (int value) { use(outer); };
}

Configure use-closest-build-context

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

falcon.jsonjson
{
  "linter": {
    "rules": {
      "correctness": {
        "use-closest-build-context": "error"
      }
    }
  }
}

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

example.dartdart
// falcon-ignore lint/correctness/use-closest-build-context: <reason>
  • use-key-in-widget-constructorsuse_key_in_widget_constructorsrecommendedflutter

    Require public widget constructors to accept or initialize a Flutter Key.

  • use-once-constructors-once-provideruse_once_constructors_once_providerflutter

    Require Riverpod once-providers to be created through .once().

  • use-ref-and-state-synchronouslyrecommendedriverpod

    Flags notifier ref and state accesses after an async gap without ref.mounted.

  • use-ref-read-synchronouslyrecommendedriverpod

    Flags Riverpod WidgetRef.read calls after an async gap without a mounted guard.

  • use-setstate-synchronouslyrecommendedflutter

    Require a mounted check before calling setState after an async gap.

  • valid-regexpsvalid_regexpsrecommended

    Disallow statically known invalid dart:core regular expressions.

  • void-checksvoid_checksrecommended

    Don't pass or assign values to void (or FutureOr<void>) locations.

  • add-equatable-propsrecommendedequatable

    Flags concrete Equatable subclasses that do not declare an instance props property.