Skip to content

Commit

Permalink
fix(hooks_memoized_consideration): some bug fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
nikaera committed Feb 27, 2024
1 parent 4e5a3f5 commit 851878c
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 10 deletions.
4 changes: 4 additions & 0 deletions packages/flutter_hooks_lint/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 1.0.4

- Fixed a bug in `hooks_memoized_consideration`

## 1.0.3

- Fixed a bug in `hooks_method_visitor.dart`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,15 @@ class HooksMemoizedConsiderationRule extends DartLintRule {
classNode.visitChildren(
HooksMethodVisitor(
onVisitMethodInvocation: (node) {
if (node.methodName.name == 'useMemoized') {
return;
}

final ancestor =
node.parent?.thisOrAncestorOfType<MethodInvocation>();
if (ancestor?.methodName.name == 'useMemoized') {
return;
}
if (['useFuture', 'useStream'].contains(node.methodName.name)) {
reporter.reportErrorForNode(code, node);
}
Expand All @@ -33,6 +42,10 @@ class HooksMemoizedConsiderationRule extends DartLintRule {
});

context.registry.addVariableDeclaration((node) {
if (node.childEntities.last.toString().startsWith('useMemoized')) {
return;
}

final classDeclaration = node.thisOrAncestorOfType<ClassDeclaration>();
final extendsClause = classDeclaration?.extendsClause;
if (extendsClause == null) {
Expand Down
2 changes: 1 addition & 1 deletion packages/flutter_hooks_lint/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: flutter_hooks_lint
description: A lint package providing guidelines for using flutter_hooks in your Flutter widget!
version: 1.0.3
version: 1.0.4
homepage: https://github.com/nikaera/flutter_hooks_lint
repository: https://github.com/nikaera/flutter_hooks_lint
documentation: https://github.com/nikaera/flutter_hooks_lint
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ class ConsiderationMemoizedWidget extends HookWidget {
Widget build(BuildContext context) {
final key = GlobalKey<TooltipState>();
final objectKey = GlobalObjectKey<TooltipState>("object");
final _ = useMemoized(GlobalKey.new);
final __ = useMemoized(() => GlobalObjectKey("object_memo"));
return Column(
children: [key, objectKey]
.map((k) => Tooltip(
Expand All @@ -23,6 +25,8 @@ class HookConsiderationMemoizedWidget extends HookWidget {
final state = useState(0);
final snapshot =
useFuture(Future.delayed(Duration(seconds: 5), () => "Hi!"));
final _ = useMemoized(
() => useFuture(Future.delayed(Duration(seconds: 5), () => "Hi!")));
useEffect(() {
if (snapshot.hasData && snapshot.data != null) {
state.value = 5;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Diff for file `test/hooks_memoized_consideration/hooks_memoized_consideration.da
- final key = GlobalKey<TooltipState>();
+ final key = useMemoized(() => GlobalKey<TooltipState>());
final objectKey = GlobalObjectKey<TooltipState>("object");
return Column(
final _ = useMemoized(GlobalKey.new);
```
---
Message: `Wrap with useMemoized`
Expand All @@ -18,31 +18,31 @@ Diff for file `test/hooks_memoized_consideration/hooks_memoized_consideration.da
final key = GlobalKey<TooltipState>();
- final objectKey = GlobalObjectKey<TooltipState>("object");
+ final objectKey = useMemoized(() => GlobalObjectKey<TooltipState>("object"));
return Column(
children: [key, objectKey]
final _ = useMemoized(GlobalKey.new);
final __ = useMemoized(() => GlobalObjectKey("object_memo"));
```
---
Message: `Wrap with useMemoized`
Priority: 30
Diff for file `test/hooks_memoized_consideration/hooks_memoized_consideration.dart:25`:
Diff for file `test/hooks_memoized_consideration/hooks_memoized_consideration.dart:27`:
```
final state = useState(0);
final snapshot =
- useFuture(Future.delayed(Duration(seconds: 5), () => "Hi!"));
+ useMemoized(() => useFuture(Future.delayed(Duration(seconds: 5), () => "Hi!")));
useEffect(() {
if (snapshot.hasData && snapshot.data != null) {
final _ = useMemoized(
() => useFuture(Future.delayed(Duration(seconds: 5), () => "Hi!")));
```
---
Message: `Wrap with useMemoized`
Priority: 30
Diff for file `test/hooks_memoized_consideration/hooks_memoized_consideration.dart:25`:
Diff for file `test/hooks_memoized_consideration/hooks_memoized_consideration.dart:27`:
```
final state = useState(0);
final snapshot =
- useFuture(Future.delayed(Duration(seconds: 5), () => "Hi!"));
+ useMemoized(() => useFuture(Future.delayed(Duration(seconds: 5), () => "Hi!")));
useEffect(() {
if (snapshot.hasData && snapshot.data != null) {
final _ = useMemoized(
() => useFuture(Future.delayed(Duration(seconds: 5), () => "Hi!")));
```
---

0 comments on commit 851878c

Please sign in to comment.