Gostaria de exibir o número de documentos que correspondem a uma consulta específica. A consulta é um valor booleano, portanto, exiba o número de documentos que possuem o valor "true". Encontrei várias perguntas relacionadas a isso no Stack Overflow, mas apenas o código a seguir atende às minhas necessidades.
O código a seguir imprime o número correto no console, mas preciso de ajuda para exibi-lo na tela.
final Future<void> activityDone = FirebaseFirestore
.instance
.collection('user')
.doc(FirebaseAuth.instance.currentUser!.uid)
.collection('list')
.doc(widget.docId).collection('activity').where("status", isEqualTo: true)
.count().get().then(
(res) => print(res.count),
onError: (e) => print("Error completing: $e"),
);
Não consigo fazer esse código de contagem funcionar.
String count = activityDone.toString();
Gostaria de usar o código de contagem em um texto como este
Text("Activities done = $count"),
Código completo
child: StreamBuilder(
stream: FirebaseFirestore.instance
.collection('user')
.doc(FirebaseAuth.instance.currentUser!.uid)
.collection('list')
.doc(widget.docId).collection('activity').orderBy('xTimeStamp', descending: false)
.snapshots(),
),
builder: (context, snapshot) {
final xSnapshot = snapshot.data?.docs;
final Future<void> activityDone = FirebaseFirestore
.instance
.collection('user')
.doc(FirebaseAuth.instance.currentUser!.uid)
.collection('list')
.doc(widget.docId).collection('activity')
.where("status", isEqualTo: true)
.count()
.get().then(
(res) => print(res.count),
onError: (e) => print("Error completing: $e"),
);
String count = activityDone.toString();
if (xSnapshot == null) {
// Error
}, else {
Text("Activities done = $count"),
}
}
No seu caso,
builder
você está tentando fazer com que o código assíncrono se comporte de forma síncrona, o que não funciona.Como seu código
builder
usaget()
, que retorna umFuture
, você precisará retornar umFutureBuilder
de lá para manipular o asyncFuture
.Observação: Não executei este código agora, então erros de sintaxe são possíveis. Quando ocorrer um erro desses, tente resolvê-lo por conta própria antes de postar aqui novamente, por favor. LLMs (como ChatGPT e Gemini) são muito bons em explicar erros de sintaxe em blocos de código.
É estranho que você não esteja usando
xSnapshot
issobuilder
.