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

Flutter延迟组件资源读取失败:如何用rootBundle.load()正确访问?

问题原因

本地测试时,延迟组件的资源大概率被默认打包进了主应用包,所以rootBundle能正常读取;但通过Play Store分发时,延迟组件是独立的动态模块,主包的rootBundle无法访问延迟组件中的资源,这就是报错的核心原因。

解决方法

要访问延迟组件内的资源,必须先确保组件已完成下载加载,再通过该组件对应的AssetBundle来读取,不能直接用rootBundle。

1. 先加载目标延迟组件

首先要确保你配置的arBlock11组件已经下载并加载完成,Flutter会为每个延迟组件自动生成对应的加载类:

// 加载arBlock11对应的动态库
await arBlock11.loadLibrary();

2. 通过延迟组件的AssetBundle读取资源

加载完成后,使用该组件专属的AssetBundle来读取资源:

// 获取arBlock11对应的AssetBundle
final deferredBundle = await DeferredComponent.libraryBundle(arBlock11.library);

// 读取目标资源文件
ByteData assetFile = await deferredBundle.load('assets/unity/ch1/1/big.file.ecm');

关键注意点

  • 不要在主pubspec.yaml的assets节点重复声明延迟组件内的资源,否则这些资源会被打包进主包,失去延迟加载的意义。
  • 必须使用App Bundle(.aab)格式上传到Play Store,APK不支持动态交付延迟组件的功能。

内容的提问来源于stack exchange,提问作者Josh Knowles

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:00:52