Files
kulakpos_app/lib/widgets/universal_image.dart
2026-02-07 15:57:09 +07:00

67 lines
1.4 KiB
Dart

import 'dart:io';
import 'package:flutter/material.dart';
class UniversalImage extends StatelessWidget {
final String? imagePath;
final double? height;
final double? width;
final BoxFit fit;
final Widget? placeholder;
const UniversalImage({
super.key,
required this.imagePath,
this.height,
this.width,
this.fit = BoxFit.contain,
this.placeholder,
});
@override
Widget build(BuildContext context) {
if (imagePath == null || imagePath!.isEmpty) {
return _placeholder();
}
/// Network Image
if (imagePath!.startsWith('http')) {
return Image.network(
imagePath!,
height: height,
width: width,
fit: fit,
errorBuilder: (_, __, ___) => _placeholder(),
);
}
/// Local File Image
if (imagePath!.startsWith('/')) {
return Image.file(
File(imagePath!),
height: height,
width: width,
fit: fit,
errorBuilder: (_, __, ___) => _placeholder(),
);
}
/// Asset Image
return Image.asset(
imagePath!,
height: height,
width: width,
fit: fit,
errorBuilder: (_, __, ___) => _placeholder(),
);
}
Widget _placeholder() {
return placeholder ??
SizedBox(
height: height,
width: width,
child: const Icon(Icons.image_not_supported, size: 40),
);
}
}