2

我使用带有 Flutter 的 Hive 将带有键的联系人存储为字母数字字符串,每个联系人数据都是一个带有时间戳的映射

方框行 =

Key.     => Value  
'abc123' => {'name': 'JK', 'country':'GB', 'timestamp': '568'},
'etergb' => {'name': 'FS', 'country':'DE', 'timestamp': '425'}
'546hfg' => {'name': 'TD', 'country':'GB', 'timestamp': '687'}

现在可以使用where country=GB条件过滤这些,并按 map.item.timestamp ASC/DESC 对行进行排序

4

2 回答 2

1

筛选

final hiveBox = Hive.box<Dynamic>('<BOX_NAME>');
List values = hiveBox.values.toList();

filtered = box.values
  .where((object) => object['country'] == 'GB')
  .toList();

种类

filtered.sort((a, b) => a['timestamp'].compareTo(b['timestamp']));
于 2021-10-04T20:04:18.087 回答
0

对于过滤,您可以使用 For 循环或 Map。

您可以执行排序。下面是一个例子。

var items = box.values.toList();
items.sort((a, b) => a.name.compareTo(b.name));


@HiveType(typeId: 0)
class CategoryModel extends HiveObject {
  @HiveField(0)
  String id;

  @HiveField(1)
  String name;

  //...
  
  CategoryModel(this.id, this.name);
}
于 2021-07-04T23:50:38.753 回答