Flutter:为啥 Image.network 无法加载图像

Posted

技术标签:

【中文标题】Flutter:为啥 Image.network 无法加载图像【英文标题】:Flutter: why Image.network cannot load imageFlutter:为什么 Image.network 无法加载图像 【发布时间】:2019-06-12 10:52:41 【问题描述】:

我在没有网络的情况下启动应用程序。 然后我使网络可用并单击 setState 按钮,图像仍然不可见。 有解决办法吗?

  @override
  Widget build(BuildContext context) 
    return Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        body: Column(
          children: <Widget>[
            Container(
              color: Colors.blue,
              child: Image.network(
                  'https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3500755592,262843410&fm=26&gp=0.jpg'),
              width: 100,
              height: 100,
            ),
            RaisedButton(
              child: Text('setState'),
              onPressed: () 
                setState(() );
              ,
            ),
          ],
        ));
  

【问题讨论】:

github.com/flutter/flutter/pull/25980 我发现当一个图片加载失败时,这个图片的url会被识别为不可用。再次请求同一图像时将返回 Null。有什么办法可以解决吗? 【参考方案1】:

您的Image.network(..) 没有任何变化,因此它不会响应setState(),您的网址和大小都是不变的。

给它一些改变,比如key。此外,由于它已经在其缓存中存储了失败的图像,因此您可能还需要刷新缓存。这是一个简单的示例:

Image.network(
  "https://picsum.photos/250?image=9",
  key: ValueKey(_key)
)

setState(() 
  imageCache.clear();
  _key = DateTime.now().millisecondsSinceEpoch.toString();
);

【讨论】:

以上是关于Flutter:为啥 Image.network 无法加载图像的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - Image.network 失败时的默认图像

在 Flutter 中使用 network_image_mock 包进行图像测试

当 cached_network_image 或 Image.Network 填充数据时,Flutter 应用程序崩溃很多,仅显示与设备的连接丢失而已

使用 loadingBuilder 时 Flutter Image.network 不显示?

Flutter图片缓存 | Image.network源码分析

无法使用 Flutter Image Network 从 Firebase 存储加载图像