loadImage static method

Widget loadImage(
  1. ImageSource source,
  2. ImageStyle style, {
  3. Widget? placeholder,
  4. Widget? errorWidget,
  5. VoidCallback? onTap,
})

加载图片并返回合适的Widget

Implementation

static Widget loadImage(ImageSource source, ImageStyle style,
    {Widget? placeholder, Widget? errorWidget, VoidCallback? onTap}) {
  // 构建基础容器
  Widget imageWidget;

  switch (source.type) {
    case ImageSourceType.network:
      imageWidget = _loadNetworkImage(
          source.data as String, source.format, style,
          placeholder: placeholder, errorWidget: errorWidget);
      break;

    case ImageSourceType.asset:
      imageWidget = _loadAssetImage(
          source.data as String, source.format, style,
          placeholder: placeholder, errorWidget: errorWidget);
      break;

    case ImageSourceType.file:
      imageWidget = _loadFileImage(
          source.data as String, source.format, style,
          placeholder: placeholder, errorWidget: errorWidget);
      break;

    case ImageSourceType.memory:
      imageWidget = _loadMemoryImage(
          source.data as Uint8List, source.format, style,
          placeholder: placeholder, errorWidget: errorWidget);
      break;

    case ImageSourceType.base64:
      try {
        final bytes = ImageTypeDetector.base64ToBytes(source.data as String);
        imageWidget = _loadMemoryImage(bytes, source.format, style,
            placeholder: placeholder, errorWidget: errorWidget);
      } catch (e) {
        imageWidget = errorWidget ?? _defaultErrorWidget(style);
      }
      break;

    default:
      imageWidget = errorWidget ?? _defaultErrorWidget(style);
  }

  // 应用样式包装
  return _wrapWithStyle(imageWidget, style, onTap: onTap);
}