Pubspec.yaml
flutter:
uses-material-design: true
assets:
- lib/images/
- lib/images/app_logo.png
Main.dart
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
decoration: BoxDecoration(
color: Colors.blueAccent,
image: DecorationImage(
image: ExactAssetImage('lib/images/app_logo.png'),
fit: BoxFit.cover,
), //DecorationImage
), //BoxDecoration
),//Container
); //Scaffold
}
应用程序中完全没有错误,只是不会显示任何内容。以前从未见过。在pubspec中尝试了各种方式的各种缩进。尝试删除-和lib / images之间的空间,并替换为tab。
有什么作用?
答案 0 :(得分:1)
尝试从lib中删除图像,将图像放到名为images的新文件夹中(位于lib文件的同一级别) 将您的pubspec.yaml更改为:
flutter:
uses-material-design: true
assets:
- images/app_logo.png
以及您的代码
image: ExactAssetImage('images/app_logo.png'),
我已经尝试过了,效果很好。
答案 1 :(得分:1)
即使在lib
文件夹中,代码也可以正常工作。让我分享我的代码
这是我的pubspec.yaml
代码
name: nav
description: A new Flutter project.
version: 1.0.0+1
environment:
sdk: ">=2.1.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
assets:
- lib/images/
- lib/images/app_logo.jpg
我的main.dart
代码
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp( home: Scaffold(
appBar: AppBar(),
body: Container(
height: 200,
decoration: BoxDecoration(
color: Colors.blueAccent,
image: DecorationImage(
image: ExactAssetImage('lib/images/app_logo.jpg'),
fit: BoxFit.cover,
), //DecorationImage
), //BoxDecoration
),//Container
)); //Scaffold
}
}
您可以尝试的解决方案:
答案 2 :(得分:-1)
除了我的应用程序一直显示名称相同的旧版资产图片(我编辑过图片)之外,我在这件事上也遇到了问题。我花了很长时间来试图找出问题所在,包括但不限于,诸如抖动清除,从我的虚拟机清除用户数据,重命名等。重命名有效,这给了我一个线索,可能是资产图片缓存本身不会更新(例如:仅在映射新名称时创建新数据)。最后,我按CTRL-B进入AssetImage,这使我进入了image_resolution.dart文件。阅读一些代码后,我注意到它具有一个字符串常量,文件名为“ AssetManifest.json”。我在该文件的应用目录中进行了搜索,并找到了两个位置。
...(您的应用)\ build \ app \ intermediates \ merged_assets \ debug \ out \ flutter_assets
和
...(您的应用)\ build \ app \ intermediates \ flutter \ debug \ flutter_assets
在这两个目录中,您会注意到几个文件和目录。我将AssetManifest.json制作为.bak文件,以查看重新启动后是否将其替换。做到了,但仍然没有结果。因此,我备份了这两个文件夹中的所有文件,然后删除了它们,以使这些文件夹为空。重新启动应用程序后,文件夹将重新填充,并显示该图片的编辑版本。
我的解决方案: 删除我显示的路径中两个flutter_assets文件夹中的内容(不是应用程序的本地资产文件夹),然后重新启动应用程序。
我的猜测是,仅当新名称映射到flutter时,flutter才会更新它。因此,更改名称所指的实际文件不会执行任何操作。似乎删除两个文件夹(不仅是清单)的内容,都将迫使您的项目不仅重建清单,还重建缓存本身,并将原始文件名与该文件的新版本相关联。
希望有帮助!
编辑:在删除文件之前,我确实必须进行抖动清除。我也删除了AVD中的用户数据,只是出于很好的考虑。