79225526

Date: 2024-11-26 06:24:40
Score: 1
Natty:
Report link

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;
  });
}

}

Reasons:
  • Long answer (-1):
  • Has code block (-0.5):
  • User mentioned (1): @override
  • Self-answer (0.5):
  • Low reputation (1):
Posted by: Emon