loadContent method
Future<String?>
loadContent( - dynamic srcOrUri
)
Implementation
Future<String?> loadContent(dynamic srcOrUri) async {
final String rawInput =
(srcOrUri is Uri ? srcOrUri.toString() : srcOrUri.toString()).trim();
if (rawInput.isEmpty) return null;
if (rawInput.startsWith('<')) {
return rawInput;
}
if (rawInput.startsWith('data:')) {
return _decodeDataUri(rawInput);
}
final Uri uri = srcOrUri is Uri ? srcOrUri : resolveUri(rawInput);
if (uri.isScheme('data')) {
return _decodeDataUri(rawInput, uri);
}
if (virtualFiles != null) {
final matched = _lookupVirtualFile(rawInput) ??
(uri.isScheme('file') ? _lookupVirtualFile(uri.toFilePath()) : null);
if (matched != null) {
final parsedMatched = Uri.tryParse(matched);
if (parsedMatched != null && isHttp(parsedMatched)) {
return await _fetchHttp(parsedMatched);
}
return matched;
}
}
if (isHttp(uri)) {
return await _fetchHttp(uri);
}
if (uri.isScheme('file') || (!uri.hasScheme && !_isWeb)) {
try {
final filePath = uri.isScheme('file')
? uri.toFilePath()
: Uri.decodeComponent(uri.path);
final file = File(filePath);
if (file.existsSync()) {
return await file.readAsString();
}
} catch (_) {
return null;
}
}
return null;
}