firebase - 流和 firebase 状态不佳的问题:DocumentSnapshotPlatform 中不存在字段
问题描述
我有一个 StreamBuilder,它旨在根据传递的变量从 firestore 获取文档列表,尽管我收到了上述错误。
流生成器
StreamBuilder<QuerySnapshot>(
stream: DatabaseService.getFeedPosts(widget.currentUserId),
builder: (context, snapshot) {
if (snapshot.hasError) print(snapshot.error);
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CircularProgressIndicator(),
// Loader Animation Widget
Padding(padding: const EdgeInsets.only(top: 20.0)),
Text('Finding tasks'),
],
),
);
}
if (snapshot.hasData) {
final documents = snapshot.data.docs;
return ListView(
children: documents
.map(
(doc) => TaskList(
currentUserId: widget.currentUserId,
task: doc['id'],
user: doc['ownerId'],
),
)
.toList());
} else if (snapshot.hasError) {
print('Error');
return Text('It\'s Error!');
}
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Unable to find any tasks'),
],
),
);
}),
Firebase 查询
static Stream<QuerySnapshot> getFeedPosts(String userId) {
return tasksRef
.where('authorId', isEqualTo: userId)
.orderBy('timestamp', descending: true)
.snapshots();
}
解决方案
您应该在使用运算符之前调用data()
方法:QueryDocumentSnapshot
[]
return ListView(
children: documents
.map(
(doc) => TaskList(
currentUserId: widget.currentUserId,
task: doc.data()['id'],
user: doc.data()['ownerId'],
),
)
.toList(),
);
推荐阅读
- python - cx_oracle:连接对象应该是单例吗?
- python - PPO2强化学习“灾难性遗忘”?
- machine-learning - 如何为现有模型添加更多层(例如可教机器应用模型)?
- css - React-App 由于 node-sass 错误而崩溃 | TypeError:fs.existsSync 不是函数
- php - 如何使用 json_decode() 的结果循环?
- jpa - 持久性单元外部的 Kumuluzee JPA 持久性设置
- javascript - 未从 Lambda 函数调用 AWS-RunShellScript
- postgresql - PostgreSQL 连接
- ios - 在 UISlider 中为拇指制作闪烁效果 - Swift
- javascript - cPanel & Passenger:我的切入点是什么?