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 的图片,用于描绘路径 挑战/{ChallengeID}/comments/{CommentID}/SubComments

enter image description here

代码只是停留在 Loading 并且没有获得任何值。

解决方法

问题在于我的初始化方式

final ReadSubCommentClass parameters = ReadSubCommentClass(challenge: widget.challenge,comment: widget.comment!);

在我将它移动到 initState() 之后,它开始工作并且我在 UI 上获得输出