FireStore Transactions incrementa y disminuye el contador obteniendo resultados inconsistentes

var sfDocRef = firebaseCloudStore.collection("New").document(documentRef.get(pos)) firebaseCloudStore.runTransaction(Transaction.Function { transaction - > val snapshot = transaction.get(sfDocRef) var newlikes: Double if (isliked == true) { newlikes = snapshot.getDouble("likes") !!+1 } else { newlikes = snapshot.getDouble("likes") !!-1 } transaction.update(sfDocRef, "likes", newlikes) }).addOnSuccessListener { var ref = firebaseCloudStore.collection("New").document(documentRef.get(pos)).get().addOnCompleteListener { list = it.result.toObject(New::class.java) arraylist.get(pos).likes = list.likes arraylist.get(pos).isliked = !arraylist.get(pos).isliked adapter.notifyItemChanged(pos) } }.addOnFailureListener(OnFailureListener { e - > Log.w("TAG", "Transaction failure.", e) }) 

Aquí he implementado las transactions de FireStore como se menciona en los documentos, pero aún obtengo resultados inconsistentes, como si presionas el button "Me gusta" varias veces, luego el resultado es más grande o más bajo. ¿Hay algún error en el código o estoy haciendo algo mal?

Solutions Collecting From Web of "FireStore Transactions incrementa y disminuye el contador obteniendo resultados inconsistentes"