我对快照和 ListView 有一个小问题。到目前为止,它运行得很好。但自从我更新了 flutter 和 Dart 后,我收到了一个错误。
构建 StreamBuilder> 时抛出以下 StateError(脏,状态:_StreamBuilderBaseState, AsyncSnapshot>>#8b4ae):
错误状态: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(),
);
The snapshot.data
is a QuerySnapshot https://pub.dev/documentation/cloud_firestore/latest/cloud_firestore/QuerySnapshot-class.html, 意思就是prgSnapshot
is a DocumentSnapshot https://pub.dev/documentation/cloud_firestore/latest/cloud_firestore/DocumentSnapshot-class.html。如果您检查该文档,您会发现它没有[]
访问器。
如果您想从文档的数据中获取字段,请使用prgSnapshot.data()['project_Name']
or prgSnapshot.get('project_Name')
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)