Apenas alterei o setupListeners() da seguinte forma:
setupListeners() {
listener = firestore
.collection("listins")
.doc(widget.listin.id)
.collection("produtos")
.orderBy(ordem.name, descending: isDecrescent)
.snapshots()
.listen((snapshot) {
if (snapshot.metadata.isFromCache) {
// Se os dados vêm do cache, não mostrar SnackBars
// ou tratar de forma diferenciada.
} else {
for (var change in snapshot.docChanges) {
// Adição real
if (change.type == DocumentChangeType.added &&
change.oldIndex == -1) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(
"Produto adicionado: ${change.doc.data()?['name']}",
style:
const TextStyle(fontWeight: FontWeight.bold, color: Colors.black),
),
backgroundColor: Colors.greenAccent,
));
} else if (change.type == DocumentChangeType.modified) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text("Produto alterado: ${change.doc.data()?['name']}",
style: const TextStyle(
fontWeight: FontWeight.bold, color: Colors.black)),
backgroundColor: Colors.deepOrangeAccent));
} else if (change.type == DocumentChangeType.removed) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text("Produto removido: ${change.doc.data()?['name']}",
style: const TextStyle(
fontWeight: FontWeight.bold, color: Colors.black)),
backgroundColor: Colors.redAccent));
}
}
}
refresh(snapshot: snapshot);
});
}