Flutter 未显示时间轴帖子

Flutter 未显示时间轴帖子,flutter,Flutter,我的时间轴页面没有显示我正在关注的任何用户帖子。这些帖子在用户的个人资料页面上运行良好,但没有显示在时间线上。这是我的时间线的代码,我也没有看到任何调试错误,那么如何识别这里的错误呢?我错过什么了吗?但是,对于新用户注册,它确实会向用户显示要在时间轴页面上进行的操作 import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:flutter/material.dart'; import 'package:flutt

我的时间轴页面没有显示我正在关注的任何用户帖子。这些帖子在用户的个人资料页面上运行良好,但没有显示在时间线上。这是我的时间线的代码,我也没有看到任何调试错误,那么如何识别这里的错误呢?我错过什么了吗?但是,对于新用户注册,它确实会向用户显示要在时间轴页面上进行的操作

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:fluttershare/models/user.dart';
import 'package:fluttershare/pages/home.dart';
import 'package:fluttershare/pages/search.dart';
import 'package:fluttershare/widgets/header.dart';
import 'package:fluttershare/widgets/post.dart';
import 'package:fluttershare/widgets/progress.dart';

class Timeline extends StatefulWidget {
  final User currentUser;

  Timeline({this.currentUser});

  @override
  _TimelineState createState() => _TimelineState();
}

class _TimelineState extends State<Timeline> {
  List<Post> posts;
  List<String> followingList = [];

  @override
  void initState() {
    super.initState();
    getTimeline();
    getFollowing();
  }

  getTimeline() async {
    QuerySnapshot snapshot = await timelineRef
        .document(widget.currentUser.id)
        .collection('timelinePosts')
        .orderBy('timestamp', descending: true)
        .getDocuments();

    List<Post> posts =
        snapshot.documents.map((doc) => Post.fromDocument(doc)).toList();
    setState(() {
      this.posts = posts;
    });
  }

  getFollowing() async {
    QuerySnapshot snapshot = await followingRef
        .document(currentUser.id)
        .collection('userFollowing')
        .getDocuments();

    setState(() {
      followingList = snapshot.documents.map((doc) => doc.documentID).toList();
    });
  }

  buildTimeline() {
    if (posts == null) {
      return circularProgress();
    } else if (posts.isEmpty) {
      return buildUsersToFollow();
    } else {
      return ListView(children: posts);
    }
  }

  buildUsersToFollow() {
    return StreamBuilder(
      stream:
          usersRef.orderBy('timestamp', descending: true).limit(30).snapshots(),
      builder: (context, snapshot) {
        if (!snapshot.hasData) {
          return circularProgress();
        }
        List<UserResult> userResults = [];
        snapshot.data.documents.forEach((doc) {
          User user = User.fromDocument(doc);
          final bool isAuthUser = currentUser.id == user.id;
          final bool isFollowingUser = followingList.contains(user.id);
          if (isAuthUser) {
            return;
          } else if (isFollowingUser) {
            return;
          } else {
            UserResult userResult = UserResult(user);
            userResults.add(userResult);
          }
        });
        return Container(
          color: Theme.of(context).accentColor.withOpacity(0.2),
          child: Column(
            children: <Widget>[
              Container(
                padding: EdgeInsets.all(12.0),
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: <Widget>[
                    Icon(
                      Icons.person_add,
                      color: Theme.of(context).primaryColor,
                      size: 30.0,
                    ),
                    SizedBox(
                      width: 8.0,
                    ),
                    Text(
                      "Users to Follow",
                      style: TextStyle(
                        color: Theme.of(context).primaryColor,
                        fontSize: 30.0,
                      ),
                    ),
                  ],
                ),
              ),
              Column(children: userResults),
            ],
          ),
        );
      },
    );
  }

  @override
  Widget build(context) {
    return Scaffold(
      appBar: header(context, isAppTitle: true),
      body: RefreshIndicator(
        onRefresh: () => getTimeline(),
        child: buildTimeline(),
      ),
    );
  }
}
import'包:cloud_firestore/cloud_firestore.dart';
进口“包装:颤振/材料.省道”;
导入“包:flattershare/models/user.dart”;
导入“包:flattershare/pages/home.dart”;
导入“package:share/pages/search.dart”;
导入“package:share/widgets/header.dart”;
导入“package:flattershare/widgets/post.dart”;
导入“package:share/widgets/progress.dart”;
类Timeline扩展StatefulWidget{
最终用户当前用户;
时间线({this.currentUser});
@凌驾
_TimelineState createState();
}
类_TimelineState扩展状态{
列出员额;
列表如下列表=[];
@凌驾
void initState(){
super.initState();
getTimeline();
getFollowing();
}
getTimeline()异步{
QuerySnapshot快照=等待timelineRef
.document(widget.currentUser.id)
.collection(“timelinePosts”)
.orderBy('timestamp',降序:true)
.getDocuments();
列出职位=
snapshot.documents.map((doc)=>Post.fromDocument(doc)).toList();
设置状态(){
这个.posts=posts;
});
}
getFollowing()异步{
QuerySnapshot快照=等待以下参考
.document(currentUser.id)
.collection('userFollowing')
.getDocuments();
设置状态(){
followList=snapshot.documents.map((doc)=>doc.documentID.toList();
});
}
buildTimeline(){
if(posts==null){
返回循环进程();
}else if(posts.isEmpty){
返回buildUsersToFollow();
}否则{
返回列表视图(子项:帖子);
}
}
buildUsersToFollow(){
返回流生成器(
流:
usersRef.orderBy('timestamp',降序:true).limit(30).snapshots(),
生成器:(上下文,快照){
如果(!snapshot.hasData){
返回循环进程();
}
列出userResults=[];
snapshot.data.documents.forEach((doc){
用户=User.fromDocument(doc);
最终bool isAuthUser=currentUser.id==user.id;
最终bool isfollowUser=followList.contains(user.id);
如果(isAuthUser){
返回;
}else if(以下用户){
返回;
}否则{
UserResult UserResult=UserResult(用户);
添加(userResult);
}
});
返回容器(
颜色:Theme.of(context).accentColor.withOpacity(0.2),
子:列(
儿童:[
容器(
填充:所有边缘设置(12.0),
孩子:排(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
图标(
Icons.person\u添加,
颜色:主题。背景。原色,
尺寸:30.0,
),
大小盒子(
宽度:8.0,
),
正文(
“要关注的用户”,
样式:TextStyle(
颜色:主题。背景。原色,
字体大小:30.0,
),
),
],
),
),
列(子项:userResults),
],
),
);
},
);
}
@凌驾
小部件构建(上下文){
返回脚手架(
appBar:header(上下文,isAppTitle:true),
正文:刷新指示器(
onRefresh:()=>getTimeline(),
子级:buildTimeline(),
),
);
}
}
更新您的代码

buildTimeline() {
  if (posts == null) {
    return circularProgress();
  } else if (posts.isEmpty) {
    return buildUsersToFollow();
  } else {
    return ListView.builder(
        itemCount: posts.length,
        itemBuilder: (BuildContext ctxt, int index) {
          return Text(posts[index].toString);
        });
  }
}

ListView将小部件作为子部件。posts不是任何类型的小部件。

List posts=snapshot.documents.map((doc)=>Post.fromDocument(doc)).toList();在ListView中尝试此操作,返回文本(posts[index].posted);返回文本(帖子[索引]);它在posts索引的这一行给出了错误。并表示:无法将参数类型“Post”分配给参数类型“String”。参数类型应为.toString(),否,参数类型仍然相同。循环式进展只是循环的。。。