## 介绍
Flutter应用程序可以包含代码和 assets(有时称为资源)。asset是打包到程序安装包中的,可在运行时访问。常见类型的asset包括静态数据(例如JSON文件),配置文件,图标和图片(JPEG,WebP,GIF,动画WebP / GIF,PNG,BMP和WBMP)。
## 指定 assets
Flutter使用[pubspec.yaml](https://www.dartlang.org/tools/pub/pubspec)文件(位于项目根目录),来识别应用程序所需的asset。
这里是一个例子:
~~~
flutter:
assets:
- assets/my_icon.png
- assets/background.png
~~~
该assets部分的flutter部分指定应包含在应用程序中的文件。 每个asset都通过相对于pubspec.yaml文件所在位置的显式路径进行标识。asset的声明顺序是无关紧要的。asset的实际目录可以是任意文件夹(在本示例中是assets)。
在构建期间,Flutter将asset放置到称为 asset bundle 的特殊存档中,应用程序可以在运行时读取它们。
### Asset 变体(variant)
构建过程支持asset变体的概念:不同版本的asset可能会显示在不同的上下文中。 在pubspec.yaml的assets部分中指定asset路径时,构建过程中,会在相邻子目录中查找具有相同名称的任何文件。这些文件随后会与指定的asset一起被包含在asset bundle中。
例如,如果您的应用程序目录中有以下文件:
* …/pubspec.yaml
* …/graphics/my\_icon.png
* …/graphics/background.png
* …/graphics/dark/background.png
* …etc.
…然后您的pubspec.yaml文件包含:
~~~
flutter:
assets:
- graphics/background.png
~~~
……那么这两个graphics/background.png和graphics/dark/background.png 将包含在您的asset bundle中。前者被认为是\_main asset\_,后者被认为是一种变体(variant)。
在选择匹配当前设备分辨率的图片时,Flutter使用asset变体; 见下文。将来,这种机制可能会扩展到本地化、阅读提示等方面。
## 加载 assets
您的应用可以通过[AssetBundle](https://docs.flutter.io/flutter/services/As