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

Dart/Flutter环境下ObjectBox如何删除其生成的所有本地文件

Flutter/Dart ObjectBox 单元测试后清理生成文件方案

Dart版本的ObjectBox已经提供了对应Java版deleteAllFiles的能力,按以下步骤操作即可:

  • 第一步:先关闭当前正在运行的Store实例,调用实例方法store.close(),必须执行这一步,否则文件会被占用导致删除失败。
  • 第二步:调用Store的静态异步方法Store.deleteFromDirectory(存储目录路径),即可删除该目录下所有ObjectBox生成的文件。

单元测试完整示例

import 'dart:io';
import 'package:objectbox/objectbox.dart';
import 'package:test/test.dart';
import 'objectbox.g.dart'; // 替换为你的ObjectBox生成文件路径

late Store store;
const testDir = './objectbox-test'; // 你指定的测试用存储目录

void main() {
  setUp(() async {
    // 每次测试前清理残留文件,再初始化Store
    if (await Directory(testDir).exists()) {
      await Store.deleteFromDirectory(testDir);
    }
    store = await openStore(directory: testDir);
  });

  tearDown(() async {
    // 测试结束后关闭Store再删除所有文件
    store.close();
    await Store.deleteFromDirectory(testDir);
  });

  test('你的测试用例逻辑', () {
    // 此处编写测试代码
  });
}

注意事项

  • 如果你初始化Store时没有指定自定义存储路径,可以通过store.directoryPath属性获取当前实例的存储目录,直接传入删除方法即可,无需硬编码路径。
  • 若你使用的ObjectBox版本低于v1.0,没有内置deleteFromDirectory方法,也可以在关闭Store后手动删除整个存储目录:await Directory(存储目录路径).delete(recursive: true),效果完全一致。
  • 所有删除相关方法都是异步操作,在单元测试的teardown逻辑中需要添加await关键字等待操作执行完成,避免出现删除不完整的问题。

内容的提问来源于stack exchange,提问作者F.M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:39:04