prefer-provider-extensions

Group
Style
Path
lint/style/prefer-provider-extensions
Default
Off, opt in
Origin
Falcon
Domain
provider
Rule
394 of 512
provider

Prefer context.read/watch when provider extensions are in scope.

Invalid

example.dartdart
import 'package:flutter/widgets.dart';
import 'package:provider/provider.dart';
import 'package:provider/provider.dart' as p;
void examples(BuildContext context) {
  Provider.of<int>(context);
  Provider.of<String>(context, listen: true);
  Provider.of<Object>(context, listen: false);
  p.Provider.of<int>(context);
  p.Provider.of<String>(context, listen: (false));
}
Use `context.watch` instead of `Provider.of`.
4void examples(BuildContext context) {
5 Provider.of<int>(context);
Use `context.watch` instead of `Provider.of`.
5 Provider.of<int>(context);
6 Provider.of<String>(context, listen: true);
Use `context.read` instead of `Provider.of`.
6 Provider.of<String>(context, listen: true);
7 Provider.of<Object>(context, listen: false);
Use `context.watch` instead of `Provider.of`.
7 Provider.of<Object>(context, listen: false);
8 p.Provider.of<int>(context);
Use `context.read` instead of `Provider.of`.
8 p.Provider.of<int>(context);
9 p.Provider.of<String>(context, listen: (false));

Valid

example.dartdart
import 'package:flutter/widgets.dart';
import 'package:provider/provider.dart';
import 'package:provider/provider.dart' as p;
void examples(BuildContext context, bool listen) {
  context.read<int>();
  context.watch<int>();
  Provider.of<int>(context, listen: listen);
  p.Provider<int>(create: (_) => 1);
  p.Provider.value(value: 1);
}
void shadowed(BuildContext context, dynamic Provider) {
  Provider.of<int>(context);
}
void shadowedPrefix(BuildContext context, dynamic p) {
  p.Provider.of<int>(context);
}

Configure prefer-provider-extensions

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

falcon.jsonjson
{
  "linter": {
    "rules": {
      "style": {
        "prefer-provider-extensions": "error"
      }
    }
  }
}

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

example.dartdart
// falcon-ignore lint/style/prefer-provider-extensions: <reason>
  • prefer-returning-condition

    Flags an if returning a boolean literal followed by the opposite literal.

  • prefer-riverpod-notifier-suffixriverpod

    Requires a Notifier suffix on classes extending resolved Riverpod notifiers.

  • prefer-riverpod-provider-suffixriverpod

    Requires a Provider suffix on resolved Riverpod top-level providers and static fields.

  • prefer-single-quotesprefer_single_quotes

    Flags double-quoted string literals that could use single quotes without needing an escape.

  • prefer-sized-box-squareflutter

    Prefers SizedBox.square for an unnamed Flutter SizedBox whose explicit width and height are stable variable reads or numeric literals with identical token spelling.

  • prefer-spread-collectionsprefer_spread_collectionsrecommended

    Flags an addAll cascade on a collection literal that a spread would express.

  • prefer-switch-expression

    Prefer switch expressions for exhaustive switches that only return or assign a value.

  • prefer-test-matcherstest

    Recommends Matcher expectations and direct type, equality, or ordering matchers.