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

Flutter Objectbox如何修复「Read Only File System」错误(代码30)

修复Flutter ObjectBox Android打包时的"Read-only file system"错误

问题根源

你的代码存在异步操作处理错误:getApplicationDocumentsDirectory()是异步方法,但你直接同步初始化_store,此时paths还是初始的空目录,导致ObjectBox尝试访问Android系统的只读目录,触发了存储错误(code 30)。

修复方案

必须等待异步方法获取到正确的可读写目录后,再初始化ObjectBox Store。以下是修正后的代码:

方式1:使用async/await(推荐)

Future<void> initObjectBox() async {
  // 等待获取应用专属的可读写文档目录
  final appDocDir = await getApplicationDocumentsDirectory();
  // 基于该目录初始化ObjectBox Store
  _store = Store(
    getObjectBoxModel(),
    directory: p.join(appDocDir.path, 'objectBoxMyDirectory')
  );
}

方式2:在then回调内完成初始化

void initObjectBox() {
  getApplicationDocumentsDirectory().then((appDocDir) {
    _store = Store(
      getObjectBoxModel(),
      directory: p.join(appDocDir.path, 'objectBoxMyDirectory')
    );
    // 后续数据操作逻辑需放在此回调内
  });
}

说明

Android平台上,getApplicationDocumentsDirectory()返回的是应用专属的私有可读写目录,仅当前应用有权限访问,完全符合ObjectBox的存储要求。Windows平台因文件系统权限限制宽松,初始空目录恰好指向可读写路径,所以未触发错误,但这种写法在Android上必然会出现权限问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:22:10