defaultImageResolver function
Resolves http(s): URLs, data: URIs and asset paths, and nothing else.
Everything else returns null and draws the placeholder — a file: URL in
a document from someone else has no business reading the local disk.
Implementation
ImageProvider<Object>? defaultImageResolver(String src) {
final trimmed = src.trim();
if (trimmed.isEmpty) return null;
final uri = Uri.tryParse(trimmed);
if (uri == null) return null;
if (!uri.hasScheme) return AssetImage(trimmed);
return switch (uri.scheme.toLowerCase()) {
'http' || 'https' => NetworkImage(trimmed),
'data' when uri.data != null => _DataUriImage(
trimmed,
uri.data!.contentAsBytes(),
),
'asset' => AssetImage(uri.path),
_ => null,
};
}