buildImageWidget method

Widget? buildImageWidget(
  1. BuildTree tree,
  2. ImageSource src
)

Builds Image.

Implementation

Widget? buildImageWidget(BuildTree tree, ImageSource src) {
  final url = src.url;

  ImageProvider? provider;
  if (url.startsWith('asset:')) {
    provider = imageProviderFromAsset(url);
  } else if (url.startsWith('data:image/')) {
    provider = imageProviderFromDataUri(url);
  } else if (url.startsWith('file:')) {
    provider = imageProviderFromFileUri(url);
  } else {
    provider = imageProviderFromNetwork(url);
  }
  if (provider == null) {
    return null;
  }

  final image = src.image;
  final semanticLabel = image?.alt ?? image?.title;
  return Image(
    errorBuilder: (context, error, _) =>
        onErrorBuilder(context, tree, error, src) ?? widget0,
    loadingBuilder: (context, child, loadingProgress) {
      if (loadingProgress == null) {
        return child;
      }

      final t = loadingProgress.expectedTotalBytes;
      final loaded = loadingProgress.cumulativeBytesLoaded;
      final v = t != null && t > 0 ? loaded / t : null;
      return onLoadingBuilder(context, tree, v, src) ?? child;
    },
    excludeFromSemantics: semanticLabel == null,
    fit: BoxFit.fill,
    image: provider,
    semanticLabel: semanticLabel,
  );
}