check method

  1. @override
void check(
  1. DcqRegistry registry
)

Implementation

@override
void check(
  DcqRegistry registry,
) {
  registry.addMethodDeclaration((node) {
    final bodyNode = node.parent;
    if (bodyNode is! BlockClassBody) return;
    final parent = bodyNode.parent;
    if (parent is! ClassDeclaration) return;

    final superclass = parent.extendsClause?.superclass;
    if (superclass == null) return;
    if (superclass.name.lexeme != 'State') return;
    if (!isFromExpectedPackage(superclass, 'flutter')) return;

    final body = node.body;
    if (body is! BlockFunctionBody) return;

    final visitor = _SetStateCallVisitor();
    body.block.visitChildren(visitor);

    for (var i = 1; i < visitor.calls.length; i++) {
      reportAtNode(visitor.calls[i]);
    }
  });
}