【问题标题】:Flutter : Display Local Image when Network Image not found or error fetching it?Flutter:找不到网络图像或获取错误时显示本地图像?
【发布时间】:2020-09-15 13:23:21
【问题描述】:
Center(
                child: CachedNetworkImage(
                  imageUrl: "http:/ sosme link here",
                  errorWidget: (context, url, error) => Icon(Icons.error),
                  fadeInCurve: Curves.easeIn ,
                  fadeInDuration: Duration(milliseconds:1000),
                  fadeOutCurve: Curves.easeOut,
                  fadeOutDuration: Duration(milliseconds:500),
                  imageBuilder: (context, imageProvider) => Container(
                    height: 250.0,
                    width: 250.0,
                    decoration: BoxDecoration(
                    border: Border.all(
                    color: Colors.black,
                    ),
                    borderRadius: BorderRadius.all(Radius.circular(10)),
                    color: Colors.white,
                    image: DecorationImage(
                    image: imageProvider,
                    fit: BoxFit.cover,
                    ),
                    ),
                  ),
                ),
              ),  

我的目标是从可能存在也可能不存在的 URL 加载图像。 如果 URL 不存在,则加载资产图像。 尝试在此处插入资产图像,但没有用。 正如我在想,如果加载它时出错,意味着没有找到图像或其他东西。所以我想显示一个本地图像。

有什么建议吗?

errorWidget: (context, url, error) => Icon(Icons.error),

错误,当我使用资产图像时

【问题讨论】:

    标签: image flutter caching networking dart


    【解决方案1】:

    您可以将FadeInImage 小部件用于您的用例..

    这是给你的样本..

    
    import 'package:flutter/material.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        final title = 'Fade in images';
    
        return MaterialApp(
          title: title,
          home: Scaffold(
            appBar: AppBar(
              title: Text(title),
            ),
            body: Center(
              child: FadeInImage.assetNetwork(
                placeholder: 'assets/loading.gif',
                image: 'https://picsum.photos/250?image=9',
              ),
            ),
          ),
        );
      }
    }
    
    

    你可以得到more information from official website。

    【讨论】:

      【解决方案2】:

      确保图像存在于路径中的资产文件夹中。 例如:

      errorWidget: (context, url, error) => Image.asset('assets/images/image.jpg'),
      

      并在pubspec.yaml 文件中声明该路径。 例如:

      assets:
          - assets/images/image.png
      

      【讨论】:

      • 你好。我试过了。但假设 URL 不可用,它给了我一个错误(我通过上传屏幕截图编辑了问题)。
      • @nelsonwong:在您的代码中,我看不到异常处理,即使您输入了错误的 URL,我的代码也应该按照 CachedNetworkImage 工作
      • 感谢@srikanth7785 使用 Try/Catch 块解决。
      【解决方案3】:
      CachedNetworkImage(
      imageUrl: "your image url",
      fit: BoxFit.cover,
      width: MediaQuery.of(context).size.width,
      placeholder: (context,url) => CircularProgressIndicator(),
      errorWidget: (context,url,error) => new Icon(Icons.error))
      

      【讨论】:

      • 解释会改善这个答案
      猜你喜欢
      • 2020-08-13
      • 2021-06-06
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多