This repository was archived by the owner on Jul 16, 2023. It is now read-only.
File tree Expand file tree Collapse file tree 4 files changed +42
-4
lines changed
lib/src/analyzers/lint_analyzer/rules/rules_list/use_setstate_synchronously
test/src/analyzers/lint_analyzer/rules/rules_list/use_setstate_synchronously/examples Expand file tree Collapse file tree 4 files changed +42
-4
lines changed Original file line number Diff line number Diff line change 88* chore: restrict ` analyzer ` version to ` >=5.1.0 <5.8.0 ` .
99* feat: add static code diagnostic [ ` avoid-substring ` ] ( https://dcm.dev/docs/individuals/rules/common/avoid-substring ) .
1010* fix: correctly track prefixes usage for check-unused-code.
11+ * fix: visit only widgets for [ ` use-setstate-synchronously ` ] ( https://dcm.dev/docs/individuals/rules/flutter/use-setstate-synchronously ) .
1112
1213## 5.6.0
1314
Original file line number Diff line number Diff line change @@ -33,7 +33,7 @@ class UseSetStateSynchronouslyRule extends FlutterRule {
3333 @override
3434 Iterable <Issue > check (InternalResolvedUnitResult source) {
3535 final visitor = _Visitor (methods: methods);
36- source.unit.visitChildren (visitor);
36+ source.unit.accept (visitor);
3737
3838 return visitor.nodes
3939 .map ((node) => createIssue (
Original file line number Diff line number Diff line change @@ -8,9 +8,14 @@ class _Visitor extends RecursiveAstVisitor<void> {
88 final nodes = < SimpleIdentifier > [];
99
1010 @override
11- void visitClassDeclaration (ClassDeclaration node) {
12- if (isWidgetStateOrSubclass (node.extendsClause? .superclass.type)) {
13- node.visitChildren (this );
11+ void visitCompilationUnit (CompilationUnit node) {
12+ for (final declaration in node.declarations) {
13+ if (declaration is ClassDeclaration ) {
14+ final type = declaration.extendsClause? .superclass.type;
15+ if (isWidgetStateOrSubclass (type)) {
16+ declaration.visitChildren (this );
17+ }
18+ }
1419 }
1520 }
1621
Original file line number Diff line number Diff line change @@ -109,3 +109,35 @@ class State {}
109109Future <void > fetch () {}
110110
111111Future <bool > condition () {}
112+
113+ class SomeClass {
114+ void setState (Function () callback) {}
115+ }
116+
117+ Future <void > handle (Future Function () callback) {}
118+
119+ mixin _SomeMixin on SomeClass {
120+ Future <bool > condition () => handle (() async {
121+ await fetch ();
122+
123+ setState ();
124+ });
125+ }
126+
127+ abstract class IController {
128+ void setState (void Function () fn);
129+ }
130+
131+ abstract class ControllerBase implements IController {
132+ @override
133+ void setState (void Function () fn) {}
134+ }
135+
136+ class ControllerImpl = ControllerBase with ControllerMixin ;
137+
138+ mixin ControllerMixin on ControllerBase {
139+ Future <void > helloWorld () async {
140+ await Future <void >.delayed (const Duration (seconds: 1 ));
141+ setState (() {});
142+ }
143+ }
You can’t perform that action at this time.
0 commit comments