getImage method
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();
}