You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter build web生成嵌套assets目录致图片无法加载问题

Flutter Web构建后assets嵌套目录导致图片加载失败的解决办法

问题

执行flutter build web构建Web项目后,出现assets目录嵌套的情况:浏览器会从<domain>/assets/images/<图片名>路径请求图片,但实际图片被存放在嵌套的assets/assets/images/路径里,导致图片加载失败。

相关信息

pubspec.yaml配置

flutter:
  assets:
    - assets/images/
  fonts:
    - family: NunitoSans
      fonts:
        - asset: assets/fonts/NunitoSans-Regular.ttf
        - asset: assets/fonts/NunitoSans-Bold.ttf
        - asset: assets/fonts/NunitoSans-ExtraBold.ttf
  generate: true

项目根目录结构

根目录下包含assets文件夹(内部有images和fonts子文件夹),以及lib、pubspec.yaml等标准Flutter项目文件。

图片加载代码

Image.asset(
  'assets/images/temp.jpg',
  height: height * 0.5,
  width: width * 0.4,
  fit: BoxFit.fill,
)

构建后目录结构

构建完成后,web/assets目录下额外生成了一层assets文件夹,图片实际路径为web/assets/assets/images/temp.jpg。

解决办法

方法1:调整asset路径配置(推荐)

修改pubspec.yaml里的asset路径,同时同步调整图片加载路径:

  • 修改后的pubspec.yaml:
flutter:
  assets:
    - images/
  fonts:
    - family: NunitoSans
      fonts:
        - asset: assets/fonts/NunitoSans-Regular.ttf
        - asset: assets/fonts/NunitoSans-Bold.ttf
        - asset: assets/fonts/NunitoSans-ExtraBold.ttf
  generate: true
  • 修改后的加载代码:
Image.asset(
  'images/temp.jpg',
  height: height * 0.5,
  width: width * 0.4,
  fit: BoxFit.fill,
)

修改后执行flutter clean再重新构建,即可避免目录嵌套问题。

方法2:关闭asset自动生成

如果不需要generate: true的asset优化功能,可将其改为false,之后执行flutter clean和flutter build web重新构建:

flutter:
  assets:
    - assets/images/
  fonts:
    - family: NunitoSans
      fonts:
        - asset: assets/fonts/NunitoSans-Regular.ttf
        - asset: assets/fonts/NunitoSans-Bold.ttf
        - asset: assets/fonts/NunitoSans-ExtraBold.ttf
  generate: false

方法3:手动调整目录(临时方案)

每次构建完成后,将web/assets/assets/下的所有文件移动到web/assets/目录,再删除多余的嵌套assets文件夹。此方法需每次构建后重复操作,仅适合临时救急。

原因说明

开启generate: true后,Flutter的asset优化机制会解析配置路径,当路径以assets/开头时,会在构建后重复生成该前缀目录,导致嵌套结构出现,与浏览器请求路径不匹配。

内容的提问来源于stack exchange,提问作者Rony Tesler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 06:10:34