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 未在颤振应用程序中显示图像的主要内容,如果未能解决你的问题,请参考以下文章
Codemagic 未在 Appstore Connect 中卸载颤振应用程序集
Flutter:无法加载资产图像提供者:AssetImage(bundle:null,名称:“assets/images/rose.jpg”)