3

我在没有网络的情况下启动应用程序。然后我使网络可用并单击 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(() {});
              },
            ),
          ],
        ));
  }
4

1 回答 1

0

你没有什么可以改变的,Image.network(..)所以它不会响应setState(),你的 url 和大小都是不变的。

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

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

setState(() {
  imageCache.clear();
  _key = DateTime.now().millisecondsSinceEpoch.toString();
});
于 2020-02-06T22:57:00.797 回答