我希望CachedNetworkImage在加载新图像时更改imageUrl属性时显示占位符,但是,它显示的是先前imageUrl中的先前图像。
例如,如果我有这样的设置,其中有一个CachedNetworkImage和一个按钮。按下按钮后,状态将更新,并且CachedNetworkImage的imageUrl属性将更新。发生这种情况时,我希望CachedNetworkImage在从新图像Url加载新图像时显示占位符。我怎样才能实现自己想要的?
class SampleState extends State<SamplePage> {
String imageUrl = "https://example.com/someImage.png";
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
CachedNetworkImage(
imageUrl: imageUrl,
placeholder: Center(child: CircularProgressIndicator()
),
RaisedButton(
child: Text("Change image"),
onPressed: () {
setState(() {
imageUrl = "https://example.com/anotherImage.png";
});
},
),
],
);
}
}
最佳答案
您可以通过更改key
的值来强制完全重建小部件。例如,您可以从URL字符串创建 ValueKey
-具有相同URL的两个键相等。
class SampleState extends State<SamplePage> {
String imageUrl = "https://example.com/someImage.png";
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
CachedNetworkImage(
key: new ValueKey<String>(imageUrl),
imageUrl: imageUrl,
placeholder: Center(child: CircularProgressIndicator()
),
RaisedButton(
child: Text("Change image"),
onPressed: () {
setState(() {
imageUrl = "https://example.com/anotherImage.png";
});
},
),
],
);
}
}