失败的断言:第 1916 行 pos 14:'children != null':不是真的。?

时间:2021-03-21 09:43:03

标签: flutter dart

我一直在尝试运行 Flutter 应用程序,但它一直给我失败的断言错误。下面是我的代码。我只想显示列表中的第二个代码

     class Post extends StatefulWidget {
      final String postId;
      final String ownerId;
      final String username;
      final String location;
      final String description;
      final String mediaUrl;
      final dynamic likes;
    
      Post({
        this.postId,
        this.ownerId,
        this.username,
        this.location,
        this.description,
        this.mediaUrl,
        this.likes,
      });
    
      factory Post.fromDocument(DocumentSnapshot doc) {
        return Post(
          postId: doc['postId'],
          ownerId: doc['ownerId'],
          username: doc['username'],
          location: doc['location'],
          description: doc['description'],
          mediaUrl: doc['mediaUrl'],
          likes: doc['likes'],
        );
      }
    
      int getLikeCount(likes) {
        // if no likes, return 0
        if (likes == null) {
          return 0;
        }
        int count = 0;
        // if the key is explicitly set to true, add a like
        likes.values.forEach((val) {
          if (val == true) {
            count += 1;
          }
        });
        return count;
      }
    
      @override
      _PostState createState() => _PostState(
            postId: this.postId,
            ownerId: this.ownerId,
            username: this.username,
            location: this.location,
            description: this.description,
            mediaUrl: this.mediaUrl,
            likes: this.likes,
            likeCount: getLikeCount(this.likes),
          );
    }
    
    class _PostState extends State<Post> {
      final String postId;
      final String ownerId;
      final String username;
      final String location;
      final String description;
      final String mediaUrl;
      Int likeCount;
      Map likes;
    
      _PostState({
        this.postId,
        this.ownerId,
        this.username,
        this.location,
        this.description,
        this.mediaUrl,
        this.likes,
        this.likeCount,
      });
    
      Widget postingHeading() {
        return FutureBuilder(
            future:
                FirebaseFirestore.instance.collection('User').doc(ownerId).get(),
            builder: (context, snapshot) {
              if (!snapshot.hasData) {
                return CircularProgressIndicator();
              }
              return ListTile(
                onTap: () => print('go check the url'),
                leading: CircleAvatar(
                  backgroundImage:
                      NetworkImage("${snapshot.data.data()['photoUrl']}"),
                ),
                title: Text('${snapshot.data.data()['username']}'),
                subtitle: Text(location),
                trailing: IconButton(
                  onPressed: () => print('deleting post'),
                  icon: Icon(Icons.more_vert),
                ),
              );
            });
      }
    
      Widget postImagePicture() {
        return Stack(
          alignment: Alignment.center,
          children: [
            Image.network(mediaUrl),
          ],
        );
      }
    
      Widget postDetailsComment() {
        return Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Row(
              children: [
                IconButton(icon: Icon(Icons.favorite_border), onPressed: () {}),
                IconButton(icon: Icon(Icons.favorite_border), onPressed: () {})
              ],
            ),
            Row(
              children: <Widget>[
                Container(
                  margin: EdgeInsets.only(left: 20.0),
                  child: Text(
                    "$likeCount likes",
                    style: TextStyle(
                      color: Colors.black,
                      fontWeight: FontWeight.bold,
                    ),
                  ),
                ),
              ],
            ),
            Row(
              children: [
                Text(username),
                SizedBox(
                  width: 1,
                ),
                Flexible(child: Text(description))
              ],
            )
          ],
        );
      }
    
      @override
      Widget build(BuildContext context) {
        return Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            postingHeading(),
            postImagePicture(),
            postDetailsComment(),
          ],
        );
      }
    }

这里是我将它转换为 List 的地方...我什至不知道有什么问题....请帮忙....提前致谢

    class Profile extends StatefulWidget {
  final String currentUser;
  Profile({this.currentUser});

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

class _ProfileState extends State<Profile> {
  final _firestore = FirebaseFirestore.instance;
  int postLenght;
  List<Post> post;
  bool pleaseWait;
  @override
  void initState() {
    super.initState();
    getUsersPicsDetails();
  }

  getUsersPicsDetails() async {
    setState(() {
      pleaseWait = false;
    });
    QuerySnapshot _getPost = await _firestore
        .collection('post')
        .doc(widget.currentUser)
        .collection('userPost')
        .orderBy('timeStamp', descending: true)
        .get();
    setState(() {
      pleaseWait = true;
      postLenght = _getPost.docs.length;
      post = _getPost.docs.map((e) => Post.fromDocument(e)).toList();
      print(postLenght);
    });
  }

  fellowEditButtton({String test, Function press}) {
    return TextButton(
      onPressed: press,
      child: Container(
          alignment: Alignment.center,
          height: 25,
          width: 250,
          decoration: BoxDecoration(
              color: Theme.of(context).primaryColor,
              border: Border.all(),
              borderRadius: BorderRadius.circular(8.0)),
          child: Text(
            test,
            style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold),
          )),
    );
  }

  gettingUserprofile() {
    return StreamBuilder(
      stream: _firestore.collection('User').doc(widget.currentUser).snapshots(),
      builder:
          (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
        if (!snapshot.hasData) {
          return Center(child: CircularProgressIndicator());
        }
        if (snapshot.connectionState != ConnectionState.active) {
          return Text('this stuff en');
        }
        return ListView.builder(
            itemCount: 1,
            itemBuilder: (context, index) => Container(
                  padding: EdgeInsets.all(8.0),
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      Row(
                        children: [
                          FullScreenWidget(
                            child: Hero(
                              tag: 'smallImage',
                              child: CircleAvatar(
                                backgroundImage: NetworkImage(
                                    '${snapshot.data.data()['photoUrl']}'),
                                radius: 50.0,
                              ),
                            ),
                          ),
                          Expanded(
                            flex: 1,
                            child: Column(
                              children: [
                                Row(
                                  mainAxisAlignment:
                                      MainAxisAlignment.spaceEvenly,
                                  children: [
                                    topColum(buttom: 'Post', number: 1),
                                    topColum(buttom: 'Fellowers', number: 2),
                                    topColum(buttom: 'Following', number: 0),
                                  ],
                                ),
                                Column(
                                  crossAxisAlignment:
                                      CrossAxisAlignment.stretch,
                                  children: [
                                    Padding(
                                        padding: const EdgeInsets.symmetric(
                                          horizontal: 20.0,
                                        ),
                                        child: widget.currentUser ==
                                                _auth.currentUser.uid
                                            ? fellowEditButtton(
                                                test: 'Edit Profile',
                                                press: profileEditingButton)
                                            : fellowEditButtton(
                                                test: 'Fellow', press: () {})),
                                  ],
                                ),
                              ],
                            ),
                          ),
                        ],
                      ),

                      Divider(),
                      //! this is  i call the list
                      //getUserPicture(),
                      getUserPicture(),
                    ],
                  ),
                ));
      },
    );
  }

  profileEditingButton() {
    Navigator.push(
        context,
        MaterialPageRoute(
            builder: (_) => EditProfile(
                  userProfile: widget.currentUser,
                )));
  }

  Widget topColum({int number, String buttom}) {
    return Column(
      children: [
        Text(
          '$number',
          style: TextStyle(
            fontWeight: FontWeight.bold,
            fontSize: 20,
          ),
        ),
        Text(
          buttom,
          style: TextStyle(
            fontSize: 20,
          ),
        ),
      ],
    );
  }

//! this is the where i return the list
  Widget getUserPicture() {
    if (pleaseWait = false) {
      return CircularProgressIndicator();
    }
    return Column(
      children: post,
    );
  }


  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: header(context, titleString: "Profile"),
        body:
            //Text('${widget.currentUser}')
            gettingUserprofile());
    // userPictursPost(),
  }
}

我想得到底部的帖子...提前致谢 下面是错误图片

enter image description here

1 个答案:

答案 0 :(得分:0)

当您遇到错误时,请将其与您的问题一起发布。当您收到错误时,这意味着您的代码有问题,很可能不是颤振引擎。两者对于调试都很重要,错误+您的代码。

尝试改变这个

QuerySnapshot _getPost = await _firestore
    .collection('post')
    .doc(widget.currentUser)
    .collection('userPost')
    .orderBy('timeStamp', descending: true)
    .get();
setState(() {
  pleaseWait = true;
  postLenght = _getPost.docs.length;
  post = _getPost.docs.map((e) => Post.fromDocument(e)).toList();
  print(postLenght);
});

进入这个:

QuerySnapshot _getPost = await _firestore
    .collection('post')
    .doc(widget.currentUser)
    .collection('userPost')
    .orderBy('timeStamp', descending: true)
    .get();
if(_getPost.docs.isNotEmpty){
List<Post> tempPost = _getPost.docs.map((e) => Post.fromDocument(e)).toList();
setState(() {
  pleaseWait = true;
  post =tempPost
 
  print(postLenght);
});
}else{
print('The List is empty);}

您没有检查查询结果是否有数据。如果它是空的,你会在你的树下传递一个空的 List 帖子,你会得到你遇到的错误。