check method
void
check(
- DcqRegistry registry
)
Implementation
@override
void check(
DcqRegistry registry,
) {
registry.addClassDeclaration((node) {
final superclass = node.extendsClause?.superclass;
if (superclass == null) return;
if (superclass.name.lexeme != 'State') return;
if (!isFromExpectedPackage(superclass, 'flutter')) return;
final body = node.body;
if (body is! BlockClassBody) return;
var hasMutableField = false;
var hasLifecycleOverride = false;
for (final member in body.members) {
if (member is FieldDeclaration && !member.isStatic) {
final fields = member.fields;
if (!fields.isFinal && !fields.isConst) {
hasMutableField = true;
break;
}
if (fields.isLate && fields.isFinal) {
hasMutableField = true;
break;
}
}
if (member is MethodDeclaration &&
_lifecycleMethods.contains(member.name.lexeme)) {
hasLifecycleOverride = true;
}
}
if (!hasMutableField && !hasLifecycleOverride) {
reportAtToken(node.namePart.typeName);
}
});
}