prefer-ref-read-for-methods
- Group
- Correctness
- Path
lint/correctness/prefer-ref-read-for-methods- Default
- On (recommended)
- Origin
- Falcon
- Domain
- riverpod
- Rule
- 397 of 512
Flags watching a Riverpod notifier solely to invoke one of its methods.
Actions should read the notifier rather than establish a rebuild subscription. Only package-confirmed Ref receivers and notifier types are matched.
Invalid
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart' as hooks;
final countProvider = Provider<int>((ref) => 0);
class Counter extends Notifier<int> { void increment() {} void reset() {} int get value => 0; }
class AsyncCounter extends AsyncNotifier<int> { void refresh() {} }
final counterProvider = Provider<Counter>((ref) => Counter());
final asyncProvider = Provider<AsyncCounter>((ref) => AsyncCounter());
void actions(WidgetRef ref) {
ref.watch(counterProvider).increment();
ref.watch(counterProvider).reset();
final increment = ref.watch(counterProvider).increment;
ref.watch<Counter>(counterProvider).increment();
(ref.watch(counterProvider)).reset();
ref.watch(asyncProvider).refresh();
}void actions(WidgetRef ref) { ref.watch(counterProvider).increment(); ref.watch(counterProvider).increment(); ref.watch(counterProvider).reset(); ref.watch(counterProvider).reset(); final increment = ref.watch(counterProvider).increment; final increment = ref.watch(counterProvider).increment; ref.watch<Counter>(counterProvider).increment(); ref.watch<Counter>(counterProvider).increment(); (ref.watch(counterProvider)).reset(); (ref.watch(counterProvider)).reset(); ref.watch(asyncProvider).refresh();Valid
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart' as hooks;
final countProvider = Provider<int>((ref) => 0);
class Counter extends Notifier<int> { void increment() {} void reset() {} int get value => 0; }
class AsyncCounter extends AsyncNotifier<int> { void refresh() {} }
final counterProvider = Provider<Counter>((ref) => Counter());
final asyncProvider = Provider<AsyncCounter>((ref) => AsyncCounter());
void actions(WidgetRef ref) {
ref.read(counterProvider).increment();
final increment = ref.read(counterProvider).increment;
final state = ref.watch(counterProvider).value;
final notifier = ref.watch(counterProvider);
notifier.increment();
ref.watch(counterProvider).toString();
}
class Service { void invoke() {} }
final serviceProvider = Provider<Service>((ref) => Service());
void service(WidgetRef ref) { ref.watch(serviceProvider).invoke(); }
void unknown(dynamic ref) { ref.watch(counterProvider).increment(); }Configure prefer-ref-read-for-methods
Set its severity in falcon.json. See the configuration guide.
{
"linter": {
"rules": {
"correctness": {
"prefer-ref-read-for-methods": "error"
}
}
}
}Or silence one occurrence with a suppression comment; the reason is required.
// falcon-ignore lint/correctness/prefer-ref-read-for-methods: <reason>More correctness rules
- 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. - proper-from-environment
proper_from_environmentrecommendedRequire
fromEnvironmentto be evaluated in a const context. - proper-super-init-state
proper_super_init_staterecommendedflutterRequire
super.initState()to be the first statement of a resolved FlutterStatesubclass'sinitStateoverride.