0

我遇到了 _JsonDocumentSnapshot 这个问题在使用 streambuilder 时,我不知道为什么会遇到这个问题,我看到其他人也在做同样的事情,但他们没有遇到这个问题。我的firestore数据库结构=> 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"));
        });
  }
}

使用 print(snapshot) 后,它返回 AsyncSnapshot<DocumentSnapshot<Map<String, dynamic>>>(ConnectionState.active, Instance of '_JsonDocumentSnapshot', null, null)

在 print(snapshot.data) 之后它返回 _JsonDocumentSnapshot

这是死亡消息的红屏:- 在此处输入图像描述

我试图解决这个问题已经 2 天了,但我很困惑,因为我是新手

4

1 回答 1

0

尝试这个

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"));
        });
于 2021-12-19T22:45:10.540 回答