determinarImagen static method
Widget
determinarImagen({
- required ImagenModel imagen,
- required BoxFit fit,
- bool isOscurecer = false,
- Color tinteOscurecer = Colors.black,
- VoidCallback? onPressed,
Implementation
static Widget determinarImagen(
{required ImagenModel imagen,
required BoxFit fit,
bool isOscurecer = false,
Color tinteOscurecer = Colors.black,
VoidCallback? onPressed}) {
if (imagen.urlDispositivo.isEmpty &&
(imagen.urlDefecto == null || imagen.urlDefecto!.isEmpty)) {
return const SinImagenWidget();
}
final String url = _determinarUrlImagen(
url: imagen.urlDispositivo, urlDefecto: imagen.urlDefecto ?? '');
switch (_determinarFuenteImagen(url: url)) {
case FuenteImagen.asset:
return Image.asset(
color: isOscurecer ? tinteOscurecer.withValues(alpha:0.5) : null,
colorBlendMode: isOscurecer ? BlendMode.darken : null,
url,
fit: fit);
case FuenteImagen.network:
return Image.network(url,
loadingBuilder: (context, child, loadingProgress) =>
loadingProgress == null
? child
: Image.asset('assets/animacion_carga.gif'),
fit: fit,
color: isOscurecer ? tinteOscurecer.withValues(alpha:0.5) : null,
colorBlendMode: isOscurecer ? BlendMode.darken : null,
errorBuilder: (context, error, stackTrace) {
log('ERRRRRRRRRRROOOOOOOOR $error >>>>$stackTrace');
return const SinImagenWidget();
});
case FuenteImagen.file:
return Image.file(File(url), fit: fit);
case FuenteImagen.memory:
return Image.memory(base64Decode(url), fit: fit);
case FuenteImagen.unknown:
return const SinImagenWidget();
}
}