first commit
This commit is contained in:
66
lib/widgets/universal_image.dart
Normal file
66
lib/widgets/universal_image.dart
Normal file
@@ -0,0 +1,66 @@
|
||||
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),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user