Flutter默认图像占位符

时间:2020-05-20 18:00:28

标签: flutter dart flutter-layout flutter-dependencies dart-pub

在我的数据中,我有帖子,但有些具有图片url,而另一些具有false的值,而在显示时我想显示占位符,其中值是false

这是我的代码:

     child: FadeInImage(
  placeholder: AssetImage('assets/images/placeholder.png'),
  image: NetworkImage(posts[index].featuredImage.large ) == null ? 
   Image.asset('assets/images/placeholder.png') : NetworkImage(posts[index].featuredImage.large ),
  fit: BoxFit.cover,
),

2 个答案:

答案 0 :(得分:1)

您不需要将条件posts[index].featuredImage.large包装在NetworkImage小部件中。

只需检查来自API的字符串是否为空,然后将默认的Image设置为Image.asset('assets/images/placeholder.png'),如果不为空,则将Image设置为NetworkImage(posts[index].featuredImage.large )

尝试以下代码:

FadeInImage(
          placeholder: AssetImage('assets/images/placeholder.png'),
          image: posts[index].featuredImage.large  == null ?
          Image.asset('assets/images/placeholder.png') : NetworkImage(posts[index].featuredImage.large ),
          fit: BoxFit.cover,
        ),

答案 1 :(得分:0)

这是怎么做

child: post[index].url==false? Image.assets('assets/images/placeholder.png'): FadeInImage(
fit: BoxFit.cover,
  placeholder: AssetImage('assets/images/placeholder.png'),
  image: posts[index].featuredImage.large == null ? 
   Image.asset('assets/images/placeholder.png') : NetworkImage(posts[index].featuredImage.large ),
),

但是如果您的网址声明为String会出现问题,因为false不是String,比较不同的数据类型也不是一个好主意。然后,您必须检查RuntimeType

例如:post[index].url is String //如果网址是字符串,则为true