AssetImage 未在颤振应用程序中显示图像

Posted

技术标签:

【中文标题】AssetImage 未在颤振应用程序中显示图像【英文标题】:AssetImage is not displaying image in flutter app 【发布时间】:2019-02-01 15:43:03 【问题描述】:

图像未在颤振应用中显示。 但是我在调​​试控制台中遇到了一些错误。

I/FlutterActivityDelegate(22603): onResume setting current activity to this
I/FlutterActivityDelegate(22603): onResume setting current activity to this
I/Timeline(22603): Timeline: Activity_idle id: android.os.BinderProxy@3eb59326 time:39937973
I/flutter (22603): ══╡ EXCEPTION CAUGHT BY SERVICES ╞══════════════════════════════════════════════════════════════════
I/flutter (22603): The following assertion was thrown resolving an image codec:
I/flutter (22603): Unable to load asset: assets/images/logo.png
I/flutter (22603): When the exception was thrown, this was the stack:
I/flutter (22603): #0      PlatformAssetBundle.load (package:flutter/src/services/asset_bundle.dart:221:7)
I/flutter (22603): <asynchronous suspension>
I/flutter (22603): #1      AssetBundleImageProvider._loadAsync (package:flutter/src/painting/image_provider.dart:383:44)
I/flutter (22603): <asynchronous suspension>
I/flutter (22603): #2      AssetBundleImageProvider.load (package:flutter/src/painting/image_provider.dart:368:14)
I/flutter (22603): #3      ImageProvider.resolve.<anonymous closure>.<anonymous closure> (package:flutter/src/painting/image_provider.dart:265:86)
I/flutter (22603): #4      ImageCache.putIfAbsent (package:flutter/src/painting/image_cache.dart:82:22)
I/flutter (22603): #5      ImageProvider.resolve.<anonymous closure> (package:flutter/src/painting/image_provider.dart:265:63)
I/flutter (22603): (elided 8 frames from package dart:async)
I/flutter (22603): Image provider: AssetImage(bundle: null, name: "assets/images/logo.png")
I/flutter (22603): Image key: AssetBundleImageKey(bundle: PlatformAssetBundle#19ce7(), name: "assets/images/logo.png",
I/flutter (22603): scale: 1.0)
I/flutter (22603): ════════════════════════════════════════════════════════════════════════════════════════════════════
D/ViewRootImpl(22603): ViewPostImeInputStage ACTION_DOWN
D/ViewRootImpl(22603): ViewPostImeInputStage ACTION_DOWN

我的 Pubspec.yaml 文件

资产: - 资产/图像/logo.png

login.dart 代码

new Image.asset("assets/images/logo.png", width: 60.0, 身高:24.0, 适合:BoxFit.cover)

目录结构

pubspec.yaml 文件

【问题讨论】:

同时截取您的 pubspec.yaml 文件 【参考方案1】:

我以错误的方式提及图像文件。我在“-”和图像名称之间放置空格而不是制表符。

资产:

- assets/images/logo.png

不要在 pubspec.yaml 文件中的字符而不是制表符之间放置空格

【讨论】:

【参考方案2】:

可能有两个问题:

1.) 您的 pubspec.yaml 文件没有适当的缩进。附上sn-p供参考。

flutter:  
  uses-material-design: true   
  assets:   
    - assets/

- assets/ 将考虑目录中的所有图像。

2.)如果您使用的是 .jpg 图片,请在您调用的任何地方将其更改为 .jpeg。

附上sn-p供大家参考

class _UserLoginState extends State<UserLogin> 
  @override
  Widget build(BuildContext context) 
    return Scaffold(
      body: Stack(
        children: <Widget>[
          Image(image: AssetImage("assets/christmas.jpeg"),
          fit: BoxFit.cover,
        ],
      )
    );
  
 

【讨论】:

我的问题是缩进不正确。作为 Flutter 的新手,我只需按退格键删除 #,这会使关键字“资产”发送到行首。【参考方案3】:

确保您在 Image.asset 中引用的文件夹包含该文件。

例如:

Image.asset(
"./assets/images/loading.gif",
height: 125.0,
width: 125.0,
)

文件夹应该是:

C:\your_app_folder\assets\images

pubspec.yaml:

  assets:
    - assets/
    - assets/images/

运行 flutter clean 清理中间文件并刷新。

【讨论】:

【参考方案4】:

我假设您将文件复制到 assets/images/ 文件夹中,对吗? 您还需要将您的图像引用到pubspec.yaml 文件中。

  flutter:

  ...

    assets:
      - assets/images/logo.png

【讨论】:

我还添加了 pubspec.yaml 你能输入你用来显示图像的代码吗?并将 pubspec.yaml 放入您的问题中。 @syamlal ,您的文件 logo.png 位于何处?你能把你的项目树目录截图吗?【参考方案5】:

Hot Reload 是我的问题。我只是重新启动了 Android Studio 并重新运行了该应用程序,一切正常!

【讨论】:

【参考方案6】:

确保您的图像文件夹位于项目文件夹中。

【讨论】:

【参考方案7】:

参考https://api.flutter.dev/flutter/painting/AssetImage-class.html

在 pubspec.yaml 文件中添加资产图像,并在资产中提及 images 的路径,它可以正常工作。

 new AssetImage("images/logo.png")

例如

CircleAvatar(
  radius: 80,
  backgroundImage: AssetImage('images/logo.png'),
 ),

【讨论】:

感谢您对其他正确答案采取行动的好意。在检查我们的环境后,我们已经给出了问题的解决方案。请通过链接api.flutter.dev/flutter/painting/AssetImage-class.html并确认使用上述代码,用户可以使用上述代码(AssetImage)加载图像【参考方案8】:

我刚换了

Image.asset("assets\images\_Lightweight.jpeg"),

Image.asset("assets/images/_Lightweight.jpeg"),

【讨论】:

【参考方案9】:

我的问题是资产部分的缩进。我写在行首,而它应该在颤振后缩进一个Tab:节。

罗比

【讨论】:

【参考方案10】:
    Flutter 不支持 jpg 文件。 使用“/”(正斜杠)尝试文件的完整路径。

【讨论】:

【参考方案11】:

将新图像添加到资产文件夹后,我遇到了同样的问题。我正在执行“热重载”,我从后台销毁了应用程序,重新运行了应用程序,问题得到了解决。

【讨论】:

【参考方案12】:

这些改变肯定会奏效。

AssetImage('mypicture.jpg')

上面是我的代码,我没有在我的图像文件名中使用“assets”文件夹名称,它运行良好。

这些是我在“pubspec.yaml”文件中的资产。

assets:
    - assets/cat.png
    - assets/mypicture.jpg```

【讨论】:

不需要带有斜杠的全名目录名就可以了 - assets/ 但是如果你想在资产中添加选定的图片,那么你还必须写文件名。【参考方案13】:

您的 pubspec.yaml 不正确

flutter:
  uses-material-design: true

  assets:
    - images/

检查是否是这种方式。

【讨论】:

以上是关于AssetImage 未在颤振应用程序中显示图像的主要内容,如果未能解决你的问题,请参考以下文章

颤振:找不到图像[重复]

图像未在 Flutter 中加载

Codemagic 未在 Appstore Connect 中卸载颤振应用程序集

未在颤振自定义应用程序栏中获取脚手架上下文

Flutter:无法加载资产图像提供者:AssetImage(bundle:null,名称:“assets/images/rose.jpg”)

将图像从 firebase 显示到颤振应用程序 [关闭]