How to filter Hive data in flutter by data values?
7,943
Solution 1
You can simply filter the list using the where()
function.
Example:
list.where((item) => item.value == 1)
.forEach((item) => print('All First Value Data Showing Result'));
This will filter the list and retain objects only where the value is equal to 1.
Or for other people that are using Box
to retrieve your values you can do like this example:
Box<Item> itemBox = Hive.box<Item>("Item");
itemBox.values.where((item) => item.value == 1)
.forEach((item) => print('All First Value Data Showing Result'));
Hope this is what you were searching for.
Solution 2
this is simple code .
var filteredUsers = monstersBox.values
.where((Monster) => Monster.name == "Vampire")
.toList();
print(filteredUsers.length);
and this is my class :
@HiveType(typeId: 0)
class Monster {
@HiveField(0)
String? name;
@HiveField(1)
int? level;
Monster(this.name, this.level);
}
Author by
Admin
Updated on December 24, 2022Comments
-
Admin over 1 year
In Flutter, I using
ValueListenableBuilder
widget to get list of hive data, and I'm trying to filter my data by data values.Example:-
Key: 1 name(value) : mydata1 des(value) : mydescription1 value(value) : 1
here in this example I want to filter data by data value called
value(value)
by help of dropdown,like:
if (value.compareTo(1) == 1){ print('All First Value Data Showing Result'); }
Something like that:
Expanded( child: ValueListenableBuilder( valueListenable: msgbox.listenable(), builder: (context, box, _) { Map<dynamic, dynamic> raw = box.toMap(); List list = raw.values.toList(); return ListView.builder( itemCount: list.length, itemBuilder: (context, index){ MsgModel msges = list[index]; return GestureDetector( onDoubleTap: () {}, child: Padding( padding: EdgeInsets.only(left: 8, right: 8), child: Column( children: [ ...