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

Flutter如何添加可通过文件系统路径访问而非rootbundle的资源文件

实现方法

Flutter本身没有直接跳过rootbundle将资源直接放到设备可写文件系统的原生机制,但可以通过平台侧配置让文件被打包到应用的原生资源目录,无需经过Flutter的资源归档,具体分平台操作:

Android 端

  1. 在android/app/src/main下新建assets文件夹,将someFile.txt放入其中。
  2. 修改android/app/build.gradle,在android代码块内添加:
    sourceSets {
        main {
            assets.srcDirs = ['src/main/assets']
        }
    }
    
  3. 编译后文件会被打包到APK的原生assets目录,可通过以下方式访问:
    final dir = await getExternalStorageDirectory();
    final filePath = '${dir!.path}/someFile.txt';
    File myFile = File(filePath);
    

iOS 端

  1. 打开iOS项目(ios/Runner.xcworkspace),将someFile.txt拖拽到项目导航栏,勾选「Copy items if needed」并确保选中目标应用的「Add to targets」。
  2. 文件会被打包到App的主bundle目录,访问方式:
    final dir = await getApplicationSupportDirectory();
    final filePath = '${dir.path}/someFile.txt';
    File myFile = File(filePath);
    

关键提示

  • 上述方式下的文件是只读的,如果Objectbox需要读写操作,建议首次启动时将该文件复制到getApplicationDocumentsDirectory()返回的可写目录,之后直接操作复制后的文件——这样既避免了rootbundle读取的开销,也满足Objectbox的读写需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 15:42:05