¿Se cuenta como nuevas lecturas en Firstore la frecuencia de lectura de los mismos datos?
Supongamos que tenemos un ListView.builder
que obtiene datos de Firstore
.
Widget build(BuildContext context) {
return FutureBuilder(
future: FirebaseFirestore.instance.collection('users').get(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (!snapshot.hasData) {
return const Expanded(child: SizedBox()) ;
}
return ListView.builder(
itemCount: snapshot.data!.docs.length ,
itemBuilder: (context, int index) {
DocumentSnapshot documentSnapshot = snapshot.data!.docs[index];
return ListView.builder(
itemCount: snapshot.data!.docs.length ,
itemBuilder: (context, int index) {
DocumentSnapshot documentSnapshot = snapshot.data!.docs[index];
return Text(documentSnapshot['products'])
}
);
}
}
Ok. Acabo de leer estos datos que son productos .. y luego abro la misma página nuevamente donde se encuentra FutureBuilder
en la clase stfl
, ¿Esto contará como una nueva lectura? Incluso si los datos no han cambiado
En otras palabras, ¿Si la clase stfl
vuelve a buscar los datos, se calculará una nueva lectura cada vez que el usuario abra la misma página muchas veces?
¿Y lo mismo con StreamBuilder
?
¿Debería evitar esto con intervención del software para obtener los datos una vez de alguna manera, como obtener los datos una vez al principio del lanzamiento de la aplicación en lugar de obtenerlos en la clase general que los usuarios navegan muchas veces?
davy.ai
Sí, cada vez que el usuario abra la misma página donde se encuentra
FutureBuilder
oStreamBuilder
, se contará como una nueva lectura aunque los datos no hayan cambiado. Por lo tanto, es mejor evitar lecturas innecesarias obteniendo los datos una vez al comienzo del lanzamiento de la aplicación y almacenándolos en una solución de gestión de estado comoProvider
oBloc
, en lugar de obtenerlos en la clase general que los usuarios navegan muchas veces. Esto asegurará que minimices el número de lecturas en la base de datos Firestore y mejores el rendimiento de tu aplicación.