check method
void
check(
- DcqRegistry registry
)
Implementation
@override
void check(DcqRegistry registry) {
var hasProviderImport = false;
registry.addImportDirective((node) {
final uri = node.uri.stringValue;
if (uri != null && uri.startsWith('package:provider/')) {
hasProviderImport = true;
}
});
final pendingNodes = <MethodInvocation>[];
registry.addMethodInvocation((node) {
final target = node.target;
if (target is! SimpleIdentifier) return;
if (target.name != 'Provider' &&
target.name != 'ChangeNotifierProvider') {
return;
}
if (node.methodName.name != 'of') return;
// Verify the target resolves to the provider package.
final targetType = target.staticType;
if (targetType is InterfaceType &&
!isTypeFromPackage(targetType, 'provider')) {
return;
}
pendingNodes.add(node);
});
registry.afterLibrary(() {
if (!hasProviderImport) return;
for (final node in pendingNodes) {
reportAtNode(node);
}
});
}