buildWidgetContent method
- @override
- BuildContext context
override
Implementation
@override
Widget buildWidgetContent(BuildContext context) {
final parsedUri = _parsedUri;
if (parsedUri == null) {
return const SizedBox.shrink();
}
final uriStr = parsedUri.toString();
final isHttpOrData = kIsWeb ||
parsedUri.scheme == 'http' ||
parsedUri.scheme == 'https' ||
parsedUri.scheme == 'data' ||
parsedUri.scheme == 'blob';
if (isHttpOrData) {
return Image.network(
uriStr,
fit: BoxFit.fill,
width: double.infinity,
height: double.infinity,
loadingBuilder: (context, child, loadingProgress) {
if (loadingProgress == null) return child;
return const Center(child: CircularProgressIndicator());
},
errorBuilder: (context, error, stackTrace) {
return const Center(
child: Icon(Icons.error, color: Colors.red, size: 50));
},
);
} else {
final localPath = (parsedUri.isScheme('file'))
? parsedUri.toFilePath()
: Uri.decodeComponent(parsedUri.path);
return Image.file(
File(localPath),
fit: BoxFit.fill,
width: double.infinity,
height: double.infinity,
errorBuilder: (context, error, stackTrace) {
return Image.asset(
uriStr,
fit: BoxFit.fill,
width: double.infinity,
height: double.infinity,
errorBuilder: (context, error, stackTrace) {
return const Center(
child: Icon(Icons.error, color: Colors.red, size: 50));
},
);
},
);
}
}