如何在颤动中仅显示没有图像的文本

时间:2020-07-09 12:26:47

标签: firebase flutter google-cloud-firestore

我创建了一个功能,用户可以在其中上传图像并上传文本的描述信息。 用户可以选择不同地上传具有描述的图像,也可以仅不同地上传描述而没有图像。将文本上传到Firestore中并查询以显示在用户帖子中后,它将返回错误:

Cached_image_widget.dart:失败的断言:第163行POS 16:'imageUrl!= null':不正确。

cachedNetworkImage方法代码:

Widget cachedNetworkImage(String mediaUrl) {
  return CachedNetworkImage(
    imageUrl: mediaUrl,
    fit: BoxFit.cover,
    placeholder: (context, url) => Padding(
      padding: EdgeInsets.all(20.0),
      child: CircularProgressIndicator(),
      ),
      errorWidget: (context, url, error) => Icon(Icons.error),
    );
}

这是我的帖子图片代码:

buildPostImage() {
       return Padding(
          padding: const EdgeInsets.all(8.0),
          child: GestureDetector(
            onDoubleTap: handleLikePost,
            child: Stack(
              alignment: Alignment.center,
              children: <Widget>[
                cachedNetworkImage(mediaUrl),
                showHeart ? Icon(Icons.favorite, size: 100.0, color: 
                Colors.grey[400]) :
                Text(''),
          ],
        ),
      ),
    );
  }

这是描述代码:

 Row(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        Expanded(
          child: Padding(
            padding: const EdgeInsets.only(),
            child: Container(
              decoration: BoxDecoration(
               // color: Colors.grey[800],
                borderRadius: BorderRadius.circular(0.0)
              ),
              child: Padding(
                padding: const EdgeInsets.all(10.0),
                child: Text(
                  description,
                  style: TextStyle(
                    fontSize: 17.0,
                  ),
                ),
              ),
            ),
          ),
        ),
      ],
    ),

1 个答案:

答案 0 :(得分:2)

似乎imageUrl接收到空值,要修复此问题,您可以执行以下操作:

buildPostImage() {
       return Padding(
          padding: const EdgeInsets.all(8.0),
          child: GestureDetector(
            onDoubleTap: handleLikePost,
            child: Stack(
              alignment: Alignment.center,
              children: <Widget>[
                mediaUrl != null ? cachedNetworkImage(mediaUrl) : Container(),
                showHeart ? Icon(Icons.favorite, size: 100.0, color: 
                Colors.grey[400]) :
                Text(''),
          ],
        ),
      ),
    );
  }