It's working now...
@override void initState() { super.initState();
// Listen to changes in the user controller's data
ever(controller.user, (_) {
final userBlood = controller.user.value.bloodGroup;
final currentUserEmail = controller.user.value.email;
if (userBlood != null && currentUserEmail != null) {
fetchDonationRequests(userBlood, currentUserEmail);
}
});
}
Future fetchDonationRequests(String userBlood, String currentUserEmail) async { try { print('Fetching requests for blood group: $userBlood, excluding email: $currentUserEmail');
QuerySnapshot querySnapshot = await FirebaseFirestore.instance
.collection("Requests")
.where("status", isEqualTo: "Pending")
.where("bloodGroup", isEqualTo: userBlood)
.orderBy(FieldPath.documentId, descending: true)
.get();
// Filter results to exclude the current user's email
final filteredDocs = querySnapshot.docs.where((doc) {
final data = doc.data() as Map<String, dynamic>;
return data["userEmail"] != currentUserEmail;
}).toList();
if (filteredDocs.isNotEmpty) {
donationMap = filteredDocs.first.data() as Map<String, dynamic>;
} else {
donationMap = {}; // No data available
}
} catch (e) {
print("Error fetching donation requests: $e");
} finally {
setState(() {
donationRequestsLoading = false;
});
}
}