resolveUri method
Uri
resolveUri( - String src, [
- String? baseDirSrc
])
Implementation
Uri resolveUri(String src, [String? baseDirSrc]) {
final rawSrc = src.trim();
final virtualUri = _lookupVirtualUri(rawSrc);
if (virtualUri != null) return virtualUri;
final srcUri = _parseUri(rawSrc);
if (baseDirSrc == null || baseDirSrc.trim().isEmpty) {
if (!_isWeb && !srcUri.hasScheme) {
final decoded = Uri.decodeComponent(srcUri.path);
return File(decoded).absolute.uri;
}
return srcUri;
}
Uri baseUri = _parseUri(baseDirSrc.trim());
if (baseUri.isScheme('data')) {
if (!_isWeb && !srcUri.hasScheme) {
final decoded = Uri.decodeComponent(srcUri.path);
return File(decoded).absolute.uri;
}
return srcUri;
}
if (!_isWeb && !baseUri.hasScheme) {
final decodedBase = Uri.decodeComponent(baseUri.path);
final isDir = decodedBase.endsWith('/') ||
decodedBase.endsWith('\\') ||
Directory(decodedBase).existsSync();
if (isDir) {
baseUri = Directory(decodedBase).absolute.uri;
} else {
baseUri = File(decodedBase).absolute.uri;
}
}
final resolved = baseUri.resolveUri(srcUri);
final virtualResolved = _lookupVirtualUri(resolved.toString());
if (virtualResolved != null) return virtualResolved;
if (!_isWeb && !resolved.hasScheme) {
final decoded = Uri.decodeComponent(resolved.path);
return File(decoded).absolute.uri;
}
return resolved;
}