determinarImagen static method

Widget determinarImagen({
  1. required ImagenModel imagen,
  2. required BoxFit fit,
  3. bool isOscurecer = false,
  4. Color tinteOscurecer = Colors.black,
  5. 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();
  }
}