Фильтрация и сортировка записей из поля Hive во Flutter
Я использую Hive с Flutter для хранения контактов с ключом в виде буквенно-цифровой строки, каждая контактная информация - это карта с меткой времени в ней.
Ряды ящиков =
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
2 ответа
Фильтр
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));
@HiveType(typeId: 0)
class CategoryModel extends HiveObject {
@HiveField(0)
String id;
@HiveField(1)
String name;
//...
CategoryModel(this.id, this.name);
}