prefer-use-callback
- Group
- Performance
- Path
lint/performance/prefer-use-callback- Default
- Off, opt in
- Origin
- Falcon
- Domain
- flutter_hooks
- Rule
- 417 of 512
Prefer useCallback for synchronous memoized function literals.
Only resolved flutter_hooks calls with a zero-argument, single-expression
builder are checked; asynchronous and side-effectful builders are preserved.
Invalid
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_hooks/flutter_hooks.dart' as hooks;
void example() {
useMemoized(() => () {});
hooks.useMemoized(() => (int value) => value + 1);
useMemoized(() { return () {}; });
useMemoized<void Function()>(() => () {});
useMemoized(() => (() {}), [1]);
}void example() { useMemoized(() => () {}); useMemoized(() => () {}); hooks.useMemoized(() => (int value) => value + 1); hooks.useMemoized(() => (int value) => value + 1); useMemoized(() { return () {}; }); useMemoized(() { return () {}; }); useMemoized<void Function()>(() => () {}); useMemoized<void Function()>(() => () {}); useMemoized(() => (() {}), [1]);Valid
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_hooks/flutter_hooks.dart' as hooks;
void example() {
useCallback(() {});
useMemoized(() => 42);
useMemoized(() async => () {});
useMemoized(() { print('creation'); return () {}; });
useMemoized(() => existing);
void local(dynamic useMemoized) { useMemoized(() => () {}); }
void prefix(dynamic hooks) { hooks.useMemoized(() => () {}); }
}
void existing() {}
class Local {
dynamic useMemoized(dynamic callback) => callback();
void build() { useMemoized(() => () {}); }
}Configure prefer-use-callback
Set its severity in falcon.json. See the configuration guide.
{
"linter": {
"rules": {
"performance": {
"prefer-use-callback": "error"
}
}
}
}Or silence one occurrence with a suppression comment; the reason is required.
// falcon-ignore lint/performance/prefer-use-callback: <reason>More performance rules
- prefer-use-memoflutter_hooks
Prefer memoizing freshly allocated collection values used as hook keys.
- prefer-using-list-viewflutter
Suggests considering
ListViewfor aSingleChildScrollViewcontaining a plain Flutter Column with at least two unconditional children in a list literal. - sized-box-for-whitespace
sized_box_for_whitespacerecommendedflutterFlags a
Containerused only to add fixedwidth/heightwhitespace. - unnecessary-to-list-in-spreads
unnecessary_to_list_in_spreadsrecommendedFlags a
.toList()call on the operand of a spread, e.g. - use-is-even-rather-than-modulo
use_is_even_rather_than_moduloPrefers
isEven/isOddto comparingx % 2with0or1. - use-string-buffers
use_string_buffersrecommendedPrefers a
StringBufferto growing aStringwith+inside a loop. - avoid-border-allflutter
Avoids Flutter's non-const
Border.allfactory. - avoid-shrink-wrap-in-listsflutter
Avoids shrink-wrapped Flutter lists nested in rows, columns, or other lists.