我对快照和 ListView 有一个小问题。到目前为止,它运行良好。但是由于我更新了 flutter 和 Dart,我收到了一个错误。
<块引用>在构建 StreamBuilder
我不明白如何解决这个问题。我检查了文档中字段的名称,没问题。 拜托,你能帮我理解这个吗?将不胜感激。谢谢
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();
}
}
答案 0 :(得分:1)
在这段代码中:
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')
。
答案 1 :(得分:0)
首先请尝试为ListView实现
if(snapshot.hasData)