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

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

最佳答案

这取决于您的用例,但一种方法是使用 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,
  );
}

https://stackoverflow.com/questions/49771765/

相关文章:

dart - 如何在 flutter 中做悠悠球动画?

dart - 使用 Navigator.popUntil 和没有固定名称的路由

json - 将 JSON 映射到类对象

dart - 如何在 Flutter 中创建带有圆角的自定义模糊形状

flutter - 如何在 flutter 中加载所有 dart DateFormat 语言环境?

android - Flutter Launcher 图标没有改变?

dart - Flutter Navigator.replace() 示例

Flutter - 我想将变量从一个类传递到另一个类

dart - 添加点击功能 flutter

flutter - 在 TextFormField 上捕获点击事件