如何通过数据值过滤颤动中的Hive数据



在Flutter中,我使用ValueListenableBuilder小部件来获取配置单元数据的列表,我正试图通过数据值来过滤我的数据。

示例:-

Key: 1
name(value) : mydata1
des(value) : mydescription1
value(value) : 1

在这个例子中,我想通过下拉菜单的帮助,通过名为value(value)的数据值来过滤数据

类似:

if (value.compareTo(1) == 1){
print('All First Value Data Showing Result');
}

类似的东西:

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: [
...

ValueListenableBuilder mycode图像

您可以使用where()函数简单地过滤列表。示例:

list.where((item) => item.value == 1)
.forEach((item) => print('All First Value Data Showing Result'));

这将过滤列表,并仅在值等于1的情况下保留对象。

或者,对于其他使用Box检索您的值的人,您可以像以下示例一样执行操作:

Box<Item> itemBox = Hive.box<Item>("Item");
itemBox.values.where((item) => item.value == 1)
.forEach((item) => print('All First Value Data Showing Result'));

希望这就是你一直在寻找的。

这是一个简单的代码。

var filteredUsers = monstersBox.values
.where((Monster) => Monster.name == "Vampire")
.toList();
print(filteredUsers.length);

这是我的课:

@HiveType(typeId: 0)
class Monster {
@HiveField(0)
String? name;
@HiveField(1)
int? level;
Monster(this.name, this.level);
}

若要编辑模型对象,您很快就会需要配置单元模型键。为此,我有一些特定的过滤键,并使用它们来读取数据。不要使用box.values中的index,因为在多选模型时,删除或更新模型(如box.putAt(index,updatedModel)box.deleteAt(index,toBeDeletedModel)(上的某些数据可能会产生误导。

dbBox = Box<YourModel>();
final filterdList =
dbBox.values.where((element) => element.isFavourite!);
final filteredKeys = filterdList.map((element) {
return dbBox.keyAt(dbBox.values.toList().indexOf(element));
}).toList();
List<Widget> myLists = filteredKeys.map((key) { 
final currentModel = dbBox.get(key);
return YourModelCardWidget(modelKey : key , model : currentModel);
}).toList();
// then, you can use that key below ..
// dbBox.put(key, updatedModel) ( Update ) 
// dbBox.delete(key, currentModel)  ( Delete )

相关内容

  • 没有找到相关文章

最新更新