在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 )