【问题标题】:Expected Value of Map<String,Dynamic>,But got one type of '_JsonDocumentSnapshot'Map<String,Dynamic> 的预期值,但得到了一种类型的“_JsonDocumentSnapshot”
【发布时间】:2022-01-21 16:53:49
【问题描述】:

我遇到了 _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>>(ConnectionState.active, Instance of '_JsonDocumentSnapshot', null, null)

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

这是死亡消息的红屏:- enter image description here

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

【问题讨论】:

    标签: flutter flutter-layout flutter-web flutter-streambuilder


    【解决方案1】:

    试试这个

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

    【讨论】:

    • 我遇到了这个错误“'对象类型的值?'无法分配给“QuerySnapshot”类型的变量。尝试更改变量的类型,或将右侧类型转换为“QuerySnapshot”。”和“错误:'String' 类型的值不能分配给'int' 类型的变量。lib/request_manager.dart:33 if (data['isApproved'] == false && data['isRequested'] == 真) { ^"
    • @shriyashjagtap 我已经编辑了答案,请重新检查。
    • 现在我收到此错误未为“对象”类型定义“数据”方法。尝试将名称更正为现有方法的名称,或定义名为“数据”的方法。
    猜你喜欢
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 2022-10-08
    • 2021-11-02
    • 2021-07-29
    • 2021-06-12
    • 2022-10-14
    • 2021-05-02
    相关资源
    最近更新 更多