firebase - Flutter:流不从子集合中检索数据
问题描述
我正在创建自己的评论系统。我正在使用 firebase 来存储评论,然后将回复存储到子集合中。我的代码正在检索主要评论,但由于某种原因我无法获得子评论。仔细检查了路径和所有内容。
我的流看起来像这样
var retVal;
try {
retVal = FirebaseFirestore.instance
.collection('Challenges')
.doc(challenge.id)
.collection('comments')
.doc(comment.id)
.collection('SubComments')
.orderBy(CommentField.createdTime, descending: true)
.snapshots()
.transform(Utils.transformer<Comment>(Comment.fromJson));
return retVal;
} on FirebaseException catch (e)
{
print(e.toString());
return retVal;
}
}
(注意 var 和其他奇怪的东西。试图看看我是否能发现错误,但没有运气)
我使用 Riverpod 调用流的代码。
final challengeSubCommentStreamProvider =
StreamProvider.autoDispose.family<List<Comment>, ReadSubCommentClass>((ref, parameters) {
final database = ref.watch(databaseProvider);
return database.readSubComments(parameters.challenge, parameters.comment);
});
return Consumer(
builder: (context, ScopedReader watch, child){
final userDataProvider = watch(userProvider);
final user = userDataProvider.user;
final ReadSubCommentClass parameters = ReadSubCommentClass(challenge: widget.challenge, comment: widget.comment!);
final challengeSubCommentStream = watch(challengeSubCommentStreamProvider(parameters));
return challengeSubCommentStream.when(
data: (comments) {
if(comments.isNotEmpty)
return SliverList(
delegate: SliverChildBuilderDelegate(
(context, int index){
return buildReplyCommentListTile(comments[index], user);
},
childCount: comments.length,
),
);
else return Container(color: Colors.blue,);
},
loading: () => SliverToBoxAdapter(child: Center(child: Text('Loading'),)),
error: (_,__) => SliverToBoxAdapter(child: Container()));
},
);
来自 Firestore 的图片,用于描述路径 Challenges/{ChallengeID}/comments/{CommentID}/SubComments
解决方案
问题是我初始化的方式
final ReadSubCommentClass parameters = ReadSubCommentClass(challenge: widget.challenge, comment: widget.comment!);
将其移至 initState() 后,它开始工作,并在 UI 上获得输出
推荐阅读
- .htaccess - 为什么使用我的子域 URL 会显示不安全的 HTTPS 而不是我的正常域 URL?
- javascript - 无法解构“(中间值)”的属性“数据”,因为它未定义
- css - 将 flex 对齐到行的底部
- sas - 计数器变量不打算重置
- python - 使用 MDAnalysis 获得径向分布函数
- javascript - Vue 和 Quasar - 模块 '"../../node_modules/vue/types"' 没有导出的成员 'defineComponent'
- matlab - 通过单击点图中的某些点打开子图(MATLAB)
- java - Android View layoutInflater 通过字符串获取布局
- excel - VBA或公式在Excel中分隔街道名称和后缀?
- python - 为什么在 django 中返回 json 响应后值会改变