【问题标题】:How can i display only a text without an image in my flutter如何在颤振中只显示没有图像的文本
【发布时间】:2020-07-09 22:30:13
【问题描述】:

我创建了一个功能,用户可以上传图片和上传文字说明信息。 用户可以选择上传带有不同描述的图像,也可以只上传不同的描述而没有图像。在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,
                  ),
                ),
              ),
            ),
          ),
        ),
      ],
    ),

【问题讨论】:

  • 你能提供一些你的代码吗?似乎很容易解决,但我们需要知道你的代码结构如何。
  • 我已经更新了问题
  • 您能否提供您的cachedNetworkImage 方法的代码?
  • 我也更新了

标签: firebase flutter google-cloud-firestore


【解决方案1】:

似乎 imageUrl 正在接收 null,要解决此问题,您可以执行以下操作:

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(''),
          ],
        ),
      ),
    );
  }

【讨论】:

  • 这可能是因为您为此使用了扩展,并且它正在填充所有可用空间,请尝试使用灵活的代替;)
猜你喜欢
  • 2020-11-15
  • 2022-01-08
  • 2020-11-06
  • 2018-08-04
  • 2021-10-12
  • 2017-08-15
相关资源
最近更新 更多