I'm having problem in getting data from firestore.I can see all the document exist in firestore collection.But it returns empty list inside stream builder. Here is my code:
// Chat Screen.Dart
class ChatScreen extends StatefulWidget {
static final routeName = "/chat";
@override
_ChatScreenState createState() => _ChatScreenState();
}
class _ChatScreenState extends State<ChatScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Inbox"),),
body: FutureBuilder<String>(
future: DatabaseService.instance.getUserId(),
builder: (context, idSnap) {
if (idSnap.connectionState == ConnectionState.done) {
print("id snap :${idSnap.data}");
return StreamBuilder<QuerySnapshot>(
stream: DatabaseService.instance.chatListStream(idSnap.data),
builder: (context, chatsSnap) {
if (chatsSnap.connectionState == ConnectionState.waiting) {
return Text("waiting for the data");
} else if (chatsSnap.hasError) {
return Text('error ${chatsSnap.error}');
} else {
print("has data");
print("document found: ${chatsSnap.data.docs.length}"); // it prints 0
return Text("data is loaded");
}
});
} else {
return Container();
}
}
),
);
}
// DatabaseService.dart
class DatabaseService{
DatabaseService._privateConstructor();
static final DatabaseService instance = DatabaseService._privateConstructor();
FirebaseFirestore firestore = FirebaseFirestore.instance;
Future<String>getUserId() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String userId = prefs.getString('user_id') ?? '0';
return userId;
}
Stream<QuerySnapshot>chatListStream(String userId){
return firestore.collection('users').doc(userId).collection('chatList').snapshots();
}
}
I have checked The collection and document title which is correct and the userId being passed is not null and valid data.Here is the Screenshot of firestore database :
What am I doing wrong here?

