Flutter:无法加载资产文件“car.png”
Posted
技术标签:
【中文标题】Flutter:无法加载资产文件“car.png”【英文标题】:Flutter: Unable to load asset file 'car.png' 【发布时间】:2021-10-01 13:32:06 【问题描述】:我已将我的资产文件添加到我的项目根目录中,其中包含图像、字体和声音。
在 pubspec.yml 文件中添加资产,如下所示:
flutter:
uses-material-design: true
assets:
- assets/images/
然后我尝试通过 Image.asset 添加图像,如下面的代码:
Scaffold(
appBar: AppBar(
leading: Align(
alignment: Alignment.centerRight,
child: Text(
"Uber",
style: TextStyle(
fontSize: 22.0,
fontWeight: FontWeight.w400
),
)
),
),
body: Column(
children: [
Text(
"riyad",
style: TextStyle(color: Colors.black),
),
Image.asset("car_android.png") <-- this like
],
),
);
但它显示了无法加载资产的异常:
在解析图像编解码器时引发了以下断言: 无法加载资产:car_android.png"
我的回溯异常:
════════ Exception caught by image resource service ════════════════════════════
The following assertion was thrown resolving an image codec:
Unable to load asset: car_android.png
When the exception was thrown, this was the stack
#0 PlatformAssetBundle.load (package:flutter/src/services/asset_bundle.dart:224:7)
<asynchronous suspension>
#1 AssetBundleImageProvider._loadAsync (package:flutter/src/painting/image_provider.dart:672:14)
<asynchronous suspension>
Image provider: AssetImage(bundle: null, name: "car_android.png")
Image key: AssetBundleImageKey(bundle: PlatformAssetBundle#243b1(), name: "car_android.png", scale: 1.0)
我尝试运行命令flutter clean命令来清理缓存,然后再次运行应用程序,但同样的问题再次出现,它无法加载资产。 我是 Flutter 新手,请提供描述性答案,并建议我阅读一些博客
【问题讨论】:
尝试在一行中添加每个资产,就像这样assets/images/taxi.png
同意@veneno 并且确保终止应用程序并运行而不是热重载。如果最近包含资产。
热重启就可以了。
我在 pubspec.yml 中添加了指向资产的路径,例如“assets/images/”....不应该将其视为相对路径吗?并使用 Image.asset("car_android.png") 添加图像将被视为 Image.asset("assets/images/car_android.png")...??
【参考方案1】:
有两个问题会导致这个问题:
-
您应该停止您的项目并在没有任何
HOT RELOAD
的情况下再次运行它
你应该添加图片的完整目录 -> assets/images/YOUR_IMAGE.png
【讨论】:
【参考方案2】:您遇到的问题是因为您在创建 Image 对象时没有提供资产的完整路径。
body: Column(
children: [
Text(
"riyad",
style: TextStyle(color: Colors.black),
),
Image.asset("assets/images/car_android.png") <-- this like
],
),
【讨论】:
【参考方案3】:指定图片路径如下
Image.asset("assets/images/car_android.png")
或
Image(image: AssetImage("assets/images/car_android.png"))
问题是 Flutter 无法识别您的图像的确切存储位置。
如果问题仍然存在,请尝试执行 HOT RESTART 这将解决您的问题。
如果您更新 pubspec.yaml 文件,如果您的 IDE 没有自动更新,则运行 flutter pub get
来更新库。
【讨论】:
【参考方案4】:只是进一步推动 Harshil Khamar 的回答,这是正确且有效的另一个考虑因素。 如果您在它们之间放置另一个条目,那么 pubspec.yaml 中的资产必须处于抖动状态,那么它不知道资产文件夹在哪里。这听起来可能很愚蠢,但我确信我不是唯一一个这样做的人。
flutter:
uses-material-design: true
generate: true
flutter_intl:
enabled: true
assets:
- assets/images/<<imagename>>
flutter_intl
阻碍了资产现在认为它们在flutter_intl
之下并且不会颤动。如果我是唯一的白痴,那好吧。
flutter_intl:
enabled: true
flutter:
uses-material-design: true
generate: true
assets:
- assets/images/<<imagename>>
这样就解决了问题
【讨论】:
以上是关于Flutter:无法加载资产文件“car.png”的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 无法在物理设备上加载图像资产(但在模拟器上加载它就好了)