check method
void
check(
- DcqRegistry registry
)
Implementation
@override
void check(DcqRegistry registry) {
var hasBlocImport = false;
registry.addImportDirective((node) {
final uri = node.uri.stringValue;
if (uri != null && uri.startsWith('package:flutter_bloc/')) {
hasBlocImport = true;
}
});
final pendingNodes = <ConstructorName>[];
registry.addInstanceCreationExpression((node) {
final name = node.constructorName.type.name.lexeme;
if (name != 'BlocBuilder' && name != 'BlocConsumer') return;
final hasBuildWhen = node.argumentList.arguments.any(
(a) => a is NamedExpression && a.name.label.name == 'buildWhen',
);
if (!hasBuildWhen) pendingNodes.add(node.constructorName);
});
registry.afterLibrary(() {
if (!hasBlocImport) return;
for (final node in pendingNodes) {
reportAtNode(node);
}
});
}