prefer-immutable-provider-arguments
- Group
- Correctness
- Path
lint/correctness/prefer-immutable-provider-arguments- Default
- Off, opt in
- Origin
- Falcon
- Domain
- riverpod
- Rule
- 371 of 512
Requires stable value equality for freshly created Riverpod family keys.
Checks package-resolved Riverpod family objects, including subclasses and aliases. Non-constant collections, closures, and fresh instances inheriting Object's equality are rejected. Records are checked recursively; existing values, constants, and unresolved equality implementations are accepted.
Invalid
import 'package:riverpod/riverpod.dart';
class Mutable { int value = 0; }
final family = ProviderFamily<int, Mutable>();
final future = FutureProviderFamily<int, Mutable>();
final automatic = AutoDisposeProviderFamily<int, Mutable>();
void bad(Mutable mutable) {
family(mutable);
family(Mutable());
future(Mutable());
automatic(Mutable());
final alias = family;
alias(Mutable());
} family(mutable); family(Mutable()); family(Mutable()); future(Mutable()); future(Mutable()); automatic(Mutable()); final alias = family; alias(Mutable());Valid
import 'package:riverpod/riverpod.dart' as rp;
import 'package:meta/meta.dart';
@immutable
class Key { final int value; const Key(this.value); }
final integer = rp.ProviderFamily<int, int>();
final string = rp.ProviderFamily<int, String>();
final boolean = rp.ProviderFamily<int, bool>();
final key = rp.ProviderFamily<int, Key>();
final unknown = rp.ProviderFamily<int, dynamic>();
class ProviderFamily { void call(Object argument) {} }
class Mutable { int value = 0; }
void good(dynamic value) {
integer(1);
string('key');
boolean(true);
key(const Key(1));
unknown(value);
ProviderFamily()(Mutable());
}Configure prefer-immutable-provider-arguments
Set its severity in falcon.json. See the configuration guide.
{
"linter": {
"rules": {
"correctness": {
"prefer-immutable-provider-arguments": "error"
}
}
}
}Or silence one occurrence with a suppression comment; the reason is required.
// falcon-ignore lint/correctness/prefer-immutable-provider-arguments: <reason>More correctness rules
- prefer-read-for-methodsrecommendedprovider
Flags void method actions on a listening Provider lookup during build.
- prefer-ref-read-for-methodsrecommendedriverpod
Flags watching a Riverpod notifier solely to invoke one of its methods.
- prefer-relative-imports
prefer_relative_importsPrefer relative imports for libraries of the same package under
lib/. - prefer-sealed-bloc-eventsrecommendedbloc
Flags Bloc event classes without a sealed or final modifier.
- prefer-sealed-bloc-staterecommendedbloc
Flags Bloc state classes without a sealed or final modifier.
- prefer-void-to-null
prefer_void_to_nullrecommendedFlags uses of the
Nulltype wherevoidis meant. - proper-controller-dispose
proper_controller_disposerecommendedflutterRequires Flutter controllers owned by a
Statefield to be disposed. - proper-expanded-and-flexible
proper_expanded_and_flexiblerecommendedflutterRequire
ExpandedandFlexibleto sit directly inside a flex widget.