我使用Hive与Flutter存储联系人键作为字母数字字符串,每个联系人数据是一个映射与时间戳在它
Box Rows =
Key. => Value
'abc123' => {'name': 'JK', 'country':'GB', 'timestamp': '568'},
'etergb' => {'name': 'FS', 'country':'DE', 'timestamp': '425'}
'546hfg' => {'name': 'TD', 'country':'GB', 'timestamp': '687'}
现在可以用过滤这些国家=GBASC/DESC
过滤器
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']));
对于过滤,您可以使用For循环或Map。
可以执行排序。下面是一个例子:
var items = box.values.toList();
items.sort((a, b) => a.name.compareTo(b.name)); //ASC
items.sort((b, a) => a.name.compareTo(b.name)); //DESC
@HiveType(typeId: 0)
class CategoryModel extends HiveObject {
@HiveField(0)
String id;
@HiveField(1)
String name;
//...
CategoryModel(this.id, this.name);
}