c# image xamarin.forms offline-caching

c# - Xamarin.Forms caching images



offline-caching (1)

Puede probar https://github.com/molinch/FFImageLoading, que es la sustitución de imágenes (Android, iOS, Windows) con mejores capacidades de almacenamiento en caché.

Estoy usando Xamarin.forms para construir una aplicación que se ejecuta en IOS, Windows Phone y Android. Necesito poder almacenar imágenes en el dispositivo cuando no haya una red disponible.

Los basicos:

Estoy usando un enfoque MVVM y tengo un MenuViewModel con una propiedad IconImageId que tiene un GUID para diferentes imágenes.

Los iconos en mi celda de vista luego se une a esta propiedad:

var icon = new Image { Aspect = Aspect.AspectFit, HeightRequest = 80, WidthRequest = 80 }; icon.SetBinding(Image.SourceProperty, new Binding("IconImageId",BindingMode.Default, new ImageIdToUriImageSourceValueConverter(80, 80, iconColor)));

Luego uso un convertidor de valor personalizado llamado ImageIdToUriImageSourceValueConverter para convertir mi Id de imagen a la imagen:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var applicationUrl = App.ApplicationUrl; if (string.IsNullOrEmpty(value as string)) { return null; } var includeColorOld = string.IsNullOrEmpty(_colorOld) ? "" : string.Format("/{0}", _colorOld); // I have an image api which which handles the image itself and that works fine. var uriString = string.Format("{0}/img/{1}/{2}{3}/{4}/{5}/{6}", applicationUrl, _x, _y, includeColorOld, _color, value, "image.png"); return = new UriImageSource { Uri = new Uri(uriString), CachingEnabled = true, CacheValidity = new TimeSpan(30, 0, 0, 0) }; }

Nuestro manejador de imágenes usa el GUID para recuperar una imagen svg de nuestra API, cambia el tamaño y la vuelve a colorear, luego regresa en el formato solicitado, por ejemplo, png. Está diseñado para almacenar en caché las imágenes y funciona muy bien en nuestros sitios web.

Mi problema es que las imágenes no están almacenadas en caché en los dispositivos móviles ni en los emuladores. ¿Alguna idea sobre lo que puedo hacer para resolver estos problemas?

Gracias,

Préstamo