No olvides anadir
internet: false,
en
AddPlaceScreen
y
CardImageList
En este punto las imagenes siguen siendo Assets y las estamos declarando como Network con:
bool internet = true;
Arquitectura de Aplicaciones
Pasos para aprender Flutter Avanzado
¿Qué es una Arquitectura de software?
Tipos de Arquitecturas para Flutter
Arquitectura BLoC en Flutter
BLoC + Clean Architecture en Flutter
Estructurando nuestro proyecto utilizando la Arquitectura BLoC
Haciendo BLoC Singleton en Flutter
Aplicando Providers al Proyecto
Firebase y Flutter
Integrando Firebase Authentication, Cloud Firestore y Firebase Storage al proyecto
Integrando Firebase a Flutter para Android
Integrando Firebase a Flutter para iOS
Creación de Pantalla de Login con Flutter
Creando botones reutilizables en Flutter
Autenticación de Firebase con Google
Implementando Firebase Authentication en BLoC Pattern
Streams en Flutter
Manejando una sesión con Firebase Authentication y Flutter
Implementando Google SignOut en BLoC
Implementando Google SignOut en View
Monitoreando y validando la conexión al Sign con Google
Mostrando los datos de usuario de Google en la interfaz en Flutter
Cloud Firestore de Firebase en Flutter
¿Qué es Cloud Firestore de Firebase?
Analizando un modelo de datos no relacional
Creando un Modelo de datos en Cloud Firestore
Enviando datos a Cloud Firestore
Creando un Widget gradiente personalizado
Manejo de Desbordamiendo de Texto de Widget Text
Botón de Back en un Appbar en Flutter
Navegación entre pantallas en Flutter
Widget Text Appbar personalizado en Flutter
Widget TextField personalizado en Flutter
Creando una Safe Area para una interfaz que tiene un AppBar
Widget TextField con iconos en Flutter
Retocando el CardView
Mostrando imágenes en un CardView
Creando un botón de Submit en Flutter
Envío de datos de un fórmulario en Flutter
Subiendo datos a Firestore de Firebase
Formularios en Flutter
Acceso al Hardware con Flutter
Acceso a la cámara en Flutter
Librerías de acceso a Hardware en Flutter
Firebase Storage en Flutter
Qué es y cómo funciona Firebase Storage en Flutter
Subiendo una imagen a Firebase Storage desde Flutter
Querys avanzados en Cloud Firestore de Firebase en Flutter
Manejo de imágenes en Cloud Firestore
Cloud Firestore insertando referencias y arrays en la base de datos
Descargar imágenes de Firebase Storage y mostrarlas en Flutter
Procesando datos con BLoC Pattern
Trayendo datos de Cloud Firestore
Persistiendo datos de un usuario logueado
Aplicando Filtros en Cloud Firestore
Construyendo los Places en la pantalla de Home
Mostrando los Places en la pantalla de Home
Actualizando datos en tiempo real
Manejando la lógica de likes, como botón toggle.
Insertando y obteniendo referencias en datos de Firestore.
Usando el caché para cargar imágenes más rápido
StreamController, sink, add y StreamBuilder
Conclusiones
Conclusiones
Lectura
Sobre lo que llevamos construido en nuestra aplicación notarás que las imágenes de las listas tardan en mostrarse.
Utilizaremos una librería que nos permitirá utilizar el cache para optimizar la carga, es muy fácil de utilizar y puedes encontrar su documentación en el siguiente enlace.
Comenzaremos integrándola como recurso en el archivo pubspect.yaml
en la sección de dependencias:
dependencies:
cached_network_image: ^0.8.0
En nuestro proyecto estamos reutilizando el Widget CardImageWithFabIcon
para mostrar una imagen que viene de internet y una que proviene de la carpeta temporal del dispositivo cuando tomamos la foto.
Por esta razón es importante agregar un flag que nos permita distinguir si la imagen que mostraremos en el Card viene de internet o es un Asset, además lo pondremos como parámetro en el método constructor.
class CardImageWithFabIcon extends StatelessWidget {
final double height;
final double width;
double left;
final String pathImage;
final VoidCallback onPressedFabIcon;
final IconData iconData;
bool internet = true;
CardImageWithFabIcon({
Key key,
@required this.pathImage,
@required this.width,
@required this.height,
@required this.onPressedFabIcon,
@required this.iconData,
this.internet,
this.left
});
.
.
.
Posteriormente asignaremos la validación en la propiedad image
de esta estructura:
final card = Container(
decoration: BoxDecoration(
image: DecorationImage(
image:
),
),
);
Anteriormente usábamos el Widget NetworkImage()
para mostrarlo pero al no tener la validación cuando capturábamos la foto fallaba, así que pondremos lo siguiente:
image: internet?CachedNetworkImageProvider(pathImage):AssetImage(pathImage)
No olvides importar la librería: import 'package:cached_network_image/cached_network_image.dart';
Aplícalo también para la lista de fotos de perfil en el archivo profile_place.dart
Mira el proyecto completo aquí
Notarás inmediatamente cómo cambia la velocidad en la carga de las imágenes
Aportes 6
Preguntas 0
No olvides anadir
internet: false,
en
AddPlaceScreen
y
CardImageList
En este punto las imagenes siguen siendo Assets y las estamos declarando como Network con:
bool internet = true;
En el constructor del Card image podemos agregar que por defecto el internet sea false o true.
const CardImageWithFabIcon(
{Key key,
this.height = 350,
this.width = 250,
this.marginLeft = 20,
this.pathImage = "assets/img/beach.jpeg",
this.internet = false,
this.onPressedFabIcon,
@required this.icon})
: super(key: key);
Que mala clase
Let’s try!
Si el cache les marca error en el pubspec.yaml pongan la última versión de la libreria
https://pub.dev/packages/cached_network_image#-installing-tab-
Limpien el proyecto y corranlo.
Para limpiar el proyecto desde Android Studio, vayan a Tools > Flutter > Flutter clean
Buenísimo la opción de cached…
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.