Фильтрация и сортировка записей из поля 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);
}
Другие вопросы по тегам