【问题标题】:ListView & Snapshot - error - Bad state: field does not exist within the DocumentSnapshotPlatform [duplicate]ListView 和快照 - 错误 - 错误状态:DocumentSnapshotPlatform 中不存在字段 [重复]
【发布时间】:2021-08-24 00:18:05
【问题描述】:

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

在构建 StreamBuilder>(dirty, state: _StreamBuilderBaseState, AsyncSnapshot>>#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();
  }
}

【问题讨论】:

  • this 会回答您的问题吗?
  • 我会尽力让你知道的。谢谢

标签: firebase flutter listview google-cloud-firestore


【解决方案1】:

首先,请尝试实现ListView为

if(snapshot.hasData)

【讨论】:

    【解决方案2】:

    在这段代码中:

    return new ListView(
      children: snapshot.data.docs.map((prgSnapshot){
        return Card(
            child: ListTile(
              leading: CircleAvatar(
    
              ),
              title: Text(prgSnapshot['project_Name']),
            )
        ) ;
      }).toList(),
    );
    

    snapshot.dataQuerySnapshot,这意味着 prgSnapshotDocumentSnapshot。如果您检查该文档,您会发现它没有 [] 访问器。

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

    【讨论】:

    • 谢谢。我已经尝试过您的建议,但仍然收到相同的错误消息“状态不佳:DocumentSnapshotPlatform 中不存在字段”
    猜你喜欢
    • 2021-09-28
    • 2021-09-27
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    相关资源
    最近更新 更多