isMatch static method
Returns true if dartType
represents the type type
.
Implementation
static bool isMatch(DartType? dartType, Type type) {
if (dartType == null) return false;
if (resolveType(dartType) == type) return true;
if (type == dynamic) {
return dartType is DynamicType ? true : false;
}
// Dart:mirrors must not be used with type `dynamic`.
final checker = _checkers[type] ?? TypeChecker.fromRuntime(type);
if (checker.isExactlyType(dartType)) {
final dartTypeArgs = (dartType is ParameterizedType)
? dartType.typeArguments
: <DartType>[];
final typeMirror = reflectType(type);
final typeArgs = typeMirror.typeArguments;
// Match type arguments
if (dartTypeArgs.length != typeArgs.length) return false;
for (var i = 0; i < typeArgs.length; i++) {
if (!isMatch(
dartTypeArgs[i],
typeArgs[i].reflectedType,
)) return false;
}
// Store fully resolved types.
_resolvedTypes[dartType] = type;
return true;
} else if (checker.isAssignableFromType(dartType)) {
return true;
} else {
return false;
}
}