shriyash jagtap
shriyash jagtap

Reputation: 23

Expected Value of Map<String,Dynamic>,But got one type of '_JsonDocumentSnapshot'

I am having this issue of _JsonDocumentSnapshot While using streambuilder i don't know why i am running into this issue i saw other do the same thing and they did not run into this issue. My firestore data base structure=> Collection(Socails)=>Doc(AUTOID)=> 3fields + Collection(requests) =>Doc(AUTOID) 2Fields

import 'package:databse_web_test/database_services/getsocials.dart';
import 'package:databse_web_test/database_services/request.dart';
import 'package:databse_web_test/requestmodel.dart';
import 'package:firebase_storage/firebase_storage.dart';
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:provider/provider.dart';

class RequestManager extends StatefulWidget {
  const RequestManager({Key? key}) : super(key: key);

  @override
  _RequestManagerState createState() => _RequestManagerState();
}

class _RequestManagerState extends State<RequestManager> {
  @override
  Widget build(BuildContext context) {
    final requestsstream = FirebaseFirestore.instance
        .collection('socails')
        .doc('daaJgE8Pz5UQIlNh47UsmwWcqNi1')
        .collection('requests')
        .doc("AxTAKaXyeuC9Bql1lM7W")
        .snapshots();

    return StreamBuilder(
        stream: requestsstream,
        builder: (context, snapshot) {
          print(snapshot);
          Map<String, dynamic> data = snapshot.data! as Map<String, dynamic>;
          if (snapshot.hasData) {
            if (data['isApproved'] == false && data['isRequested'] == true) {
              return CircularProgressIndicator();
            } else if (data['isApproved'] == true &&
                data['isRequested'] == true) {
              return GetSocialData();
            }
          }
          return ElevatedButton(
              onPressed: () {
                SendRequest()
                    .updateUserData(isApproved: false, isRequested: true);
              },
              child: Text("Request Data"));
        });
  }
}

after using print(snapshot) it returns AsyncSnapshot<DocumentSnapshot<Map<String, dynamic>>>(ConnectionState.active, Instance of '_JsonDocumentSnapshot', null, null)

after print(snapshot.data) it returns _JsonDocumentSnapshot

and this the red screen of death message :- enter image description here

It's been 2 days im trying to solve this but i'm confuse cause im new to flutter

Upvotes: 1

Views: 624

Answers (1)

Oreofe Solarin
Oreofe Solarin

Reputation: 354

Try this

return StreamBuilder(
        stream: requestsstream,
        builder: (context, snapshot) {
    print(snapshot);
      Map<String, dynamic> data = snapshot.data!.data() as Map<String, dynamic>;
          if (snapshot.hasData) {
            if (data['isApproved'] == false && data['isRequested'] == true) {
              return CircularProgressIndicator();
            } else if (data['isApproved'] == true &&
                data['isRequested'] == true) {
              return GetSocialData();
            }
          }
          return ElevatedButton(
              onPressed: () {
                SendRequest()
                    .updateUserData(isApproved: false, isRequested: true);
              },
              child: Text("Request Data"));
        });

Upvotes: 1

Related Questions