首页 > 解决方案 > ListView & Snapshot - 错误 - 错误状态:DocumentSnapshotPlatform 中不存在字段

问题描述

我对快照和 ListView 有一点问题。到目前为止,它运作良好。但由于我更新了颤振和飞镖,我收到了一个错误。

在构建 StreamBuilder<QuerySnapshot<Object?>>(dirty, state: _StreamBuilderBaseState<QuerySnapshot<Object?>, AsyncSnapshot<QuerySnapshot<Object?>>>#8b4ae) 时引发了以下 StateError:错误状态:DocumentSnapshotPlatform 中不存在字段

我不明白如何解决这个问题。我检查了文档中字段的名称,没问题。拜托,你能帮我理解这个吗?将不胜感激。谢谢

import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';

import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

class ProjectsList3 extends StatefulWidget {
  ProjectsList3 ({Key key}) : super(key : key);

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

class _ProjectsList3State extends State<ProjectsList3> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      drawer:  new MyMenu(),
      appBar: new AppBar(
        title: new Text('Projects'),
      ),
      body: Column(
        children: [
          Expanded(
            child: StreamBuilder<QuerySnapshot>(
                stream: FirebaseFirestore.instance
                    .collection('Users')
                    .doc(FirebaseAuth.instance.currentUser.uid)
                    .collection('projects')
                    .snapshots(),
                builder: (BuildContext context,
                    AsyncSnapshot<QuerySnapshot> snapshot) {
                  if(snapshot.connectionState == ConnectionState.waiting){
                    return Center(child: LinearProgressIndicator());
                  }
                  else{
                    return new ListView(
                      children: snapshot.data.docs.map((prgSnapshot){
                        return Card(
                            child: ListTile(
                              leading: CircleAvatar(

                              ),
                              title: Text(prgSnapshot['project_Name']),
                            )
                        ) ;
                      }).toList(),
                    );
                    //if (!snapshot.hasData) {
                    // return Center(
                    //   child: CircularProgressIndicator(),
                    // );
                  }
                }
            ),
          ),
        ],
      ),
      bottomNavigationBar: MyBottomAppBar(),
    );
    throw UnimplementedError();
  }
}

标签: firebaseflutterlistviewgoogle-cloud-firestore

解决方案


在这段代码中:

return new ListView(
  children: snapshot.data.docs.map((prgSnapshot){
    return Card(
        child: ListTile(
          leading: CircleAvatar(

          ),
          title: Text(prgSnapshot['project_Name']),
        )
    ) ;
  }).toList(),
);

snapshot.data是一个QuerySnapshot,这意味着那是prgSnapshot一个DocumentSnapshot。如果您检查该文档,您会发现它没有[]访问器。

如果要从文档的数据中获取字段,请使用prgSnapshot.data()['project_Name']prgSnapshot.get('project_Name')


推荐阅读