I'm accessing a user's favorite group which is inside groupfav in Firestore, when I get it I want to give it as part of the reference to the streambuilder stream:, so that it knows what to show in a list, but I can't pass the variable that contains the favorite group, what should I do or what am I doing wrong?
static String? userID = FirebaseAuth.instance.currentUser?.uid; // get current user id static var taskColeccion = FirebaseFirestore.instance.collection("usuarios"); var tack = taskColeccion.doc("$userID").get().then((value) { var groupfav = value.data()!["groupfav"]; // value i get from firestore return groupfav; }); late Stream<QuerySnapshot> task = FirebaseFirestore.instance .collection("groups") .doc(groupfav) // pass the obtained value .collection("tareas") .snapshots(); The photo shows how Firestore's logic is and the value marked in green is what I must pass to the late Stream<QuerySnapshot> task... in its reference, logically it is a random value that I would not know. thanks for any help!
this is what the code looks like now (I took things that were not important)
class Home extends StatefulWidget { const Home({Key? key}) : super(key: key); @override _HomeState createState() => _HomeState(); } class _HomeState extends State<Home> { static String? userID = FirebaseAuth.instance.currentUser?.uid; static final taskColeccion = FirebaseFirestore.instance.collection("usuarios"); String groupfav = ''; final tack = taskColeccion.doc("$userID").get().then((value) { groupfav = value.data()!["groupfav"]; return groupfav; }); Stream<QuerySnapshot> task = FirebaseFirestore.instance .collection("groups") .doc(groupfav) // pass the obtained value .collection("tareas") .snapshots(); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text("Home"), automaticallyImplyLeading: false, ), body: StreamBuilder( stream: task, builder: ( BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot, ) { if (snapshot.hasError) { return const Text("error"); } if (snapshot.connectionState == ConnectionState.waiting) { return const Text("cargando"); } final data = snapshot.requireData; return ListView.builder( itemCount: data.size, itemBuilder: (context, index) { return Card( child: ListTile( title: Text("${data.docs[index]['titulo']}"), subtitle: Text("${data.docs[index]['contenido']}"), onTap: () {}, trailing: IconButton( icon: const Icon(Icons.delete), color: Colors.red[200], onPressed: () { // delete function }, ), ), ); }, ); }, ), ); } }