【问题标题】:How to delete all the boxes in the hive in flutter?如何在颤动中删除蜂巢中的所有框?
【发布时间】:2020-06-20 10:01:56
【问题描述】:

我使用 Hive 在本地存储数据,但是这些盒子是在整个应用程序中动态创建的,不知道总共有多少盒子。

当用户按下reset button 时,我想删除所有框,无论是打开的还是关闭的。

到目前为止,我可以删除所有打开的框或特定框,但不是全部。

有没有办法做到这一点?或者有什么方法可以一次性打开所有的盒子?

【问题讨论】:

  • 只是好奇为什么他们在 2019 年开始了一个轻量级 Key-Value 数据库的项目并将其命名为 Hive? github.com/hivedb
  • 这是真正的 Hive:hive.apache.org BTW 许可证不允许使用产品名称...

标签: flutter flutter-hive


【解决方案1】:

如果你想关闭所有打开的盒子

Hive.close();

如果你想从磁盘中删除所有当前打开的盒子

Hive.deleteFromDisk();

【讨论】:

  • 就是,重点,我不知道一共有多少个框,但是想把所有的框都删掉。实际上我是按月存储数据,我不知道每月创建了多少个盒子,但是当用户按下重置选项时,它会删除所有打开的盒子。
  • 如果你想删除所有的盒子你需要调用Hive.deleteFromDisk();如果你看一下源代码你会看到。 github.com/hivedb/hive/blob/master/hive/lib/src/hive.dart
【解决方案2】:

到目前为止,我必须通过再次创建盒子来存储所有盒子信息来跟踪盒子,并通过读取存储的盒子数量来删除盒子,然后也重置盒子信息。

【讨论】:

    【解决方案3】:

    我创建了这个扩展:

    import 'dart:async';
    import 'dart:io';
    
    import 'package:hive/hive.dart';
    import 'package:path_provider/path_provider.dart';
    import 'package:path/path.dart' as p;
    
    extension on HiveInterface {
      /// Get a name list of existing boxes
      FutureOr<List<String>> getNamesOfBoxes() async {
        final appDir = await getApplicationDocumentsDirectory();
        var files = appDir.listSync();
        var _list = <String>[];
    
        files.forEach((file) {
          if (file.statSync().type == FileSystemEntityType.file 
            && p.extension(file.path).toLowerCase() == '.hive') {
            _list.add(p.basenameWithoutExtension(file.path));
          }
        });
        print('Current boxes: $_list');
        return _list;
      }
      /* ---------------------------------------------------------------------------- */
      /// Delete existing boxes from disk
      void deleteBoxes() async {
        final _boxes = await this.getNamesOfBoxes();
        if (_boxes.isNotEmpty) _boxes.forEach((name) => this.deleteBoxFromDisk(name));
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-17
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      • 2021-07-07
      • 2021-03-28
      • 1970-01-01
      相关资源
      最近更新 更多