Flutter 应用程序包含代码和 assets(也为资源)。资源是被打包到应用程序安装包中,可以在运行时访问的一种文件。常见的资源类型包括静态数据(例如 JSON 文件),配置文件,图标和图片(JPEG,WebP,GIF,动画 WebP / GIF,PNG,BMP 和 WBMP)。

指定资源

Flutter 使用 pubspec.yaml 文件,位于项目根目录,来识别应用程序所需的资源。

什么是 pubspec.yaml 文件

在Flutter中,pubspec.yaml文件是一个用于管理项目依赖项和资源的配置文件。它位于Flutter项目的根目录下,并且是一个YAML格式的文本文件。

pubspec.yaml文件包含了以下主要内容:

  1. 项目信息:你可以在name字段中指定项目名称,在description字段中提供项目描述,在version字段中指定项目版本号等。
  2. 依赖项管理:你可以使用dependencies字段来列出项目所依赖的Flutter包或其他Dart库。每个依赖项都有一个名称和一个版本约束。当你运行flutter pub get命令时,Flutter会根据pubspec.yaml文件中的依赖项配置自动下载并安装所需的包。
  3. 资源管理:你可以使用assets字段来指定项目中需要作为资源使用的文件路径。这些资源可以是图片、字体、配置文件等。通过在pubspec.yaml文件中配置资源路径,Flutter可以将这些资源文件打包到应用程序中,并且你可以通过相应的API来访问它们。
  4. 其他配置:pubspec.yaml文件还可以包含其他配置项,例如构建设置、环境变量等。
name: my_flutter_app# 项目名称description: A sample Flutter application# 项目描述version: 1.0.0# 项目版本号environment:sdk: ">=2.12.0 <3.0.0"# Flutter SDK版本要求dependencies:flutter:sdk: flutter# Flutter框架依赖cupertino_icons: ^1.0.2# 依赖于Cupertino图标库,指定版本约束为1.0.2http: ^0.13.4# 依赖于HTTP网络请求库,指定版本约束为0.13.4dev_dependencies:flutter_test:sdk: flutter# 开发环境下的测试依赖flutter:assets:- assets/images/# 资源文件夹路径- assets/fonts/ # 字体文件夹路径fonts:- family: Roboto# 字体族名称fonts:- asset: assets/fonts/Roboto-Regular.ttf# 字体文件路径- asset: assets/fonts/Roboto-Bold.ttfweight: 700# 字体粗细设置

示例配置
:::info
当配置完 该文件,一定要 运行**flutter pub get**命令:在终端中运行flutter pub get命令,以确保Flutter项目依赖项和资源已正确配置。
:::

图片

图片常用的配置属性

属性说明
image要显示的图片
width图片宽度
height图片高度
fit图片适应方式
alignment图片对齐方式
repeat图片重复方式
color图片着色颜色
colorBlendMode图片着色模式
filterQuality图片滤镜质量
semanticLabel图片的语义标签
excludeFromSemantics是否从语义树中排除图片

这些属性可以通过Image小部件的构造函数或者使用Image.asset()Image.network()等静态方法进行设置。

加载本地图片

通过 pubspec.yml 文件进行配置图片目录

在根目录下创建assets 放置资源目录,创建 images 文件夹存放图片资源

flutter:uses-material-design: trueassets:- images/
使用 Image.asset 小部件加载本地图片

Image.asset('images/3.png')


显示效果

加载网络图片

通过 Image.network小部件加载网络图片:使用Image.network小部件来加载网络图片。将图片的URL作为参数传递给Image.network构造函数。
Image.network('https://img0.baidu.com/it/u=2132093665,1645757234&fm=253&fmt=auto&app=138&f=JPEG" />)


显示效果

可选:处理加载过程中的占位符和错误情况:

你可以使用placeholder参数指定一个占位符图像,在网络图片加载完成之前显示。另外,你还可以使用errorBuilder参数来自定义加载失败时的错误显示。

Image.network('https://img0.baidu.com/it/u=2132093665,1645757234&fm=253&fmt=auto&app=138&f=JPEG" />,placeholder: AssetImage('assets/images/placeholder.png'),errorBuilder: (context, error, stackTrace) {return Text('加载图片失败');},)