¿Cómo mostrar datos en Flutter desde una colección de Firestore basados en el valor en el arreglo?
Necesito eliminar documentos – comentarios/publicaciones – del flujo de información, que el usuario ha ocultado. Cuando el usuario decide ocultar la publicación, el documento de publicación de la colección crea una matriz ‘hidingUserId’ de los IDs de usuario que lo han ocultado. Consulte la imagen, por favor.
Ahora necesito eliminar la publicación donde la matriz ‘hidingUserId’ contiene el ID de usuario actual. He intentado lo siguiente, pero no muestra errores en el registro y no muestra las publicaciones. Simplemente un progreso circular circulando en la pantalla.
“`
Stream streams = postRef
.orderBy('estrellas', descending: false)
.orderBy('timestamp', descending: true)
.snapshots();
<pre><code><br /></code></pre>
@override
Widget build(BuildContext context) {
return ListView(
shrinkWrap: true,
padding: EdgeInsets.symmetric(horizontal: 10.0),
children: [
StreamBuilderWrapper(
shrinkWrap: true,
stream: streams.where((event) => event.data()['hidingUserId']
== null
|| event.data()['hidingUserId'].contains(!currentUserId()) ?
streams.forEach((event) => print(event))
: Container(
child: Center(
child: Text('No hay nada que mostrar'),))),
physics: NeverScrollableScrollPhysics(),
itemBuilder: (_, DocumentSnapshot snapshot) {
internetChecker();
Review posts = Review.fromJson(snapshot.data());
return posts.postId != null
? Padding(
padding: const EdgeInsets.only(bottom: 12.0),
child: Posts(post: posts),
)
: Container(
child: Center(
child: Text('No hay nada que mostrar'),
),
);
},
),
],
);
“`
Estoy usando Firestore por primera vez y no puedo encontrar la información que necesito. ¡Cualquier ayuda es muy apreciada! ¡Gracias!
davy.ai
Para eliminar documentos del flujo que el usuario ha ocultado, puede modificar la variable
streams
en consecuencia utilizando el métodowhere
para filtrar los documentos que contienen el ID del usuario actual en el arreglohidingUserId
. Aquí hay un fragmento de código actualizado que debería lograr esto:Los principales cambios realizados aquí se encuentran en el argumento
stream
deStreamBuilderWrapper
. El métodowhere
filtra los documentos que contienen el ID del usuario actual en el arreglohidingUserId
utilizando el métodocontains
. Elstream
actualizado se pasa entonces aStreamBuilderWrapper
para poblar la vista de lista.