firebase - 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();
}
}
解决方案
在这段代码中:
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')
。
推荐阅读
- git - Dockerfile - “主机密钥验证失败...”错误
- r - 带有 2 个类别和原始计数的华夫饼图用神秘的第 3 类组成数据填充最后一列
- python - pytz 不更新时区更改的时间
- javascript - 在 d3.js 中加载 csv 时“data.forEach 不是函数”
- php - 使用 file_get_contents 时出错,返回 null
- binary-tree - 试图在 Leetcode 中理解这个二叉搜索树。号码排列看起来不对
- sql - 当相关表使用多对一关系时,有没有办法使用 Power BI 中相关表的内容过滤表的行?
- typescript - 可以推断参数类型的嵌套对象的键吗?
- java - 使用 chromedriver 查找包含文本 IMG、Java Selenium 的 Spans
- qt - QML 中的结构化常量