// Get the application's document directory
var appDir = await getApplicationDocumentsDirectory();
// Get the chosen sub-directory for Hive files
var hiveDb = Directory('${appDir.path}/chosenPath');
// Delete the Hive directory and all its files
hiveDb.delete(recursive: true);
3条答案
按热度按时间blmhpbnm1#
不幸的是,我不认为
clear()
所有(打开的,加上未打开的)Hive都已实现。box文件基本上以*.hive文件的形式放入设备的应用程序文档目录中(压缩文件为*.hivec,锁定文件为*.lock)。没有单独的键值存储(或配置单元框)来跟踪以前创建的框,不过您可以自己实现这样的配置单元框,并根据需要迭代这些值。在您的情况下,您只需要在一次扫描中删除所有的框,解决方法是将所有的配置单元框放置到一个子目录中(使用
Hive.initFlutter('chosenPath')
)并在必要时使用标准文件操作简单地删除目录。只有你打电话给我Hive.close()
在尝试此操作之前关闭所有打开的框(删除不可删除的*.lock文件)。为了简化对应用程序文档目录的跨平台引用,可以使用path\u provider包。添加
path_provider: ^1.6.5
你的相依关系pubspec.yaml
,以及在dart应用程序中的必要位置import 'package:path_provider/path_provider.dart';
以及import 'dart:io';
用于文件操作;假设你使用
Hive.initFlutter('chosenPath')
初始化和存储你的Hive。所以每当你想清除所有的盒子(在确保
Hive.close()
可以使用以下代码:下次调用时,目录将从头开始重新生成
Hive.initFlutter('chosenPath')
.hgncfbus2#
可以使用deletefromdisk方法。它删除包含该框的文件并关闭该框。
6ss1mwsb3#
你没有共享任何代码,所以我只举一个例子。
我建议你打开主功能的盒子
当用户想要同步时,您可以执行以下操作:;