一尘不染

Flutter-失败时默认为Image.network

flutter

有什么方法可以控制Image.network()启动的异常,以便为它提供默认的AssetImage吗?


阅读 947

收藏
2020-08-13

共1个答案

一尘不染

这取决于您的用例,但是一种实现方法是使用FadeInImage,该属性具有的属性img要用于要加载的图像placeholder,以及占位符

FadeInImage(image: NetworkImage(url), placeholder: AssetImage(assetName)

您也可以收听直到图像加载完毕,然后自己显示一个占位符,直到解析出图像为止。

伪码

bool _loaded = false;
var img = Image.network(src);
var placeholder = AssetImage(assetName)

@override
void initState() {
  super.initState();
  img.image.resolve(ImageConfiguration()).addListener((i, b) {
    if (mounted) {
      setState(() => _loaded = true);
    }
  });     
}

@override
Widget build(BuildContext context) { 
  return YourWidget(
    child: _loaded ? img : placeholder,
  );
}
2020-08-13