getImage method

Widget getImage()

Implementation

Widget getImage() {
  if ((src.startsWith('assets/svg') || src.endsWith('.svg')) && src.startsWith('assets/')) {
    return _buildSvgImage();
  }

  if (src.startsWith('data:')) {
    try {
      final base64Data = src.split(',').last;
      return ClipRRect(
        borderRadius: getBorderRadius(),
        child: Image.memory(
          base64.decode(base64Data),
          height: size?.w ?? height?.w,
          width: size?.w ?? width?.w,
          fit: fill,
        ),
      );
    } catch (e) {
      CkLogger.error(e.toString(), tag: 'CkImage Data URI');
      return placeholder();
    }
  }

  if (src.startsWith('blob:')) {
    return ClipRRect(
      borderRadius: getBorderRadius(),
      child: Image.network(
        src,
        height: size?.w ?? height?.w,
        width: size?.w ?? width?.w,
        fit: fill,
      ),
    );
  }

  // Local files (all known prefixes)
  const filePrefixes = [
    '/storage', // Android
    '/sdcard', // Android alias
    '/data/user', // Android app private
    '/data/data', // older Android private
    '/var', // iOS
    '/private/var', // older iOS
  ];

  if (src.startsWith('assets/') ||
      (!kIsWeb && (filePrefixes.any((prefix) => src.startsWith(prefix)) || File(src).existsSync()))) {
    return src.startsWith('assets/') ? _buildPngImage() : _buildFileImage();
  }

  return _buildNetworkImage();
}