首页 > 解决方案 > streambuilder firebase上的错误如何解决

问题描述

我想获取他创建的所有用户帖子,并在 gridview 和 listview(列)上显示这些帖子,现在我已经有了我的查询。dart 分析器不显示错误,但是当我在调试中运行应用程序时,我会收到错误“列的子项不得包含任何空值,但在索引 0 处找到空值”

这是我的网格和列表视图小部件

 Container buildUserPosts() {


return Container(
    child:  StreamBuilder <QuerySnapshot> (
      stream: playlistsRef.where('authorId', isEqualTo: widget.userId).snapshots(),
      builder: (context, snapshot){
        if(!snapshot.hasData){
          return Center(
            child: new CircularProgressIndicator(
              valueColor: new AlwaysStoppedAnimation<Color>(Colors.white
              ),
              strokeWidth: 3.0,
            ),
          );
        }

else if (view == "grid") {
          final List <_PlaylistLikeRecord> records = snapshot.data.documents
              .map((snapshot) =>_PlaylistLikeRecord.fromSnapshot(snapshot))
              .toList();if (records == null){
 return Container();}else {
 return GridView.count(
     crossAxisCount: 3,
     childAspectRatio: 1.0,
              padding: const EdgeInsets.all(0.5),
     mainAxisSpacing: 1.5,
     crossAxisSpacing: 1.5,
     shrinkWrap: true,
     physics: const NeverScrollableScrollPhysics(),
     children: <Widget>[
       GridTile(
           child: new Column(
             children: records
                 .map((record) => _buildListItem(context, record))
                 .toList(),
           )
       ),
     ]);}
} else if (view == "feed") {
          final List <_PlaylistLikeRecord> records = snapshot.data.documents
              .map((snapshot) =>_PlaylistLikeRecord.fromSnapshot(snapshot))
              .toList();if(records == null){
return Container();}else{
return Column(
  children: records
      .map((record) => _buildListItem(context, record))
      .toList(),

);}

        }
      },
    ));}

还有我在项目点击上的手势检测器

 Widget _buildListItem(BuildContext context, _PlaylistLikeRecord record) {

GestureDetector(
    onTap: () =>   Navigator.push(context,
        MaterialPageRoute(builder: (context) => PlaylistsDetailsPage(

            imageUrl: record.playlisturl, title: record.title


        ))),
    child: Image.network(record.playlisturl, fit: BoxFit.cover));}

标签: androidfluttergridviewdartgoogle-cloud-firestore

解决方案


推荐阅读