Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何使用配置单元在Dart中按值(而不是按索引)读取/更新/删除?_Flutter_Dart_Flutter Hive - Fatal编程技术网

Flutter 如何使用配置单元在Dart中按值(而不是按索引)读取/更新/删除?

Flutter 如何使用配置单元在Dart中按值(而不是按索引)读取/更新/删除?,flutter,dart,flutter-hive,Flutter,Dart,Flutter Hive,样品 deleteItem(int索引){ 最终包装箱=蜂箱包装箱(“交付”); 框。删除(索引); } 我想将索引参数更改为对象的id),如下所示 deleteItem(内部id){ 最终包装箱=蜂箱包装箱(“交付”); //框。删除(索引); //在此处按id删除框 } 下面是我的TypeAdapter类: @HiveType(类型ID:0) 课堂教学{ @HiveField(0) 最终int id; 交付(此.id); } 将键值数据库视为一个有单词及其定义的常规良好旧词汇表。它允许您

样品

deleteItem(int索引){
最终包装箱=蜂箱包装箱(“交付”);
框。删除(索引);
}
我想将索引参数更改为对象的id),如下所示

deleteItem(内部id){
最终包装箱=蜂箱包装箱(“交付”);
//框。删除(索引);
//在此处按id删除框
}
下面是我的TypeAdapter类:

@HiveType(类型ID:0)
课堂教学{
@HiveField(0)
最终int id;
交付(此.id);
}

将键值数据库视为一个有单词及其定义的常规良好旧词汇表。它允许您使用给定的单词快速找到定义(假设您正在查找单词
大象
)。但是,如果您想找到一个定义为“大耳朵动物”的条目,则需要花费更长的时间

经过大量简化,键值数据库就是这样工作的使用索引进行查询时,它们的速度很快。

因此,如果您想使用id进行查询,我建议在索引本身中使用id

例如:

Indexes:

delivery-001
delivery-002
...

或者,如果您还想执行一些其他更复杂的查询,我建议使用一个常规的SQLite数据库。

将键值数据库想象为一个常规的良好的旧词汇表,其中包含单词及其定义。它允许您使用给定的单词快速找到定义(假设您正在查找单词
大象
)。但是,如果您想找到一个定义为“大耳朵动物”的条目,则需要花费更长的时间

经过大量简化,键值数据库就是这样工作的使用索引进行查询时,它们的速度很快。

因此,如果您想使用id进行查询,我建议在索引本身中使用id

例如:

Indexes:

delivery-001
delivery-002
...

或者,如果您还想执行一些其他更复杂的查询,我建议使用常规的SQLite数据库。

如另一个答案中所述,这是不可能的,除非您搜索每个项目并逐个比较它们的ID。根据盒子中ITEN的数量,这可能需要更长的时间,或者根本不重要

这种未优化方式的一个例子是:

  deleteItem(int id) {
    final box = Hive.box<Delivery>("deliveries");

    final Map<dynamic, Delivery> deliveriesMap = box.toMap();
    dynamic desiredKey;
    deliveriesMap.forEach((key, value){
        if (value.id == id)
            desiredKey = key;
    });
    box.delete(desiredKey);
  }
deleteItem(内部id){
最终包装箱=蜂箱包装箱(“交付”);
最终地图交付Map=box.toMap();
动态期望密钥;
deliveriesMap.forEach((键,值){
if(value.id==id)
desiredKey=密钥;
});
框。删除(desiredKey);
}
这段代码的作用是使用。有了一张地图,我们就遍历地图上的每个条目,检查哪个条目有特定的ID,并记录下来。之后,我们只需使用删除找到的密钥。您可以阅读有关在地图中迭代的更多信息


请记住,这只是一个例子。如果您尝试使用此选项,您可能需要检查是否确实存在具有您正在搜索的ID的项目。如果是这种情况,您还需要检查框中具有相同ID的多个值。

如另一个答案中所述,这是不可能的,除非您搜索每个项目并逐个比较它们的ID。根据盒子中ITEN的数量,这可能需要更长的时间,或者根本不重要

这种未优化方式的一个例子是:

  deleteItem(int id) {
    final box = Hive.box<Delivery>("deliveries");

    final Map<dynamic, Delivery> deliveriesMap = box.toMap();
    dynamic desiredKey;
    deliveriesMap.forEach((key, value){
        if (value.id == id)
            desiredKey = key;
    });
    box.delete(desiredKey);
  }
deleteItem(内部id){
最终包装箱=蜂箱包装箱(“交付”);
最终地图交付Map=box.toMap();
动态期望密钥;
deliveriesMap.forEach((键,值){
if(value.id==id)
desiredKey=密钥;
});
框。删除(desiredKey);
}
这段代码的作用是使用。有了一张地图,我们就遍历地图上的每个条目,检查哪个条目有特定的ID,并记录下来。之后,我们只需使用删除找到的密钥。您可以阅读有关在地图中迭代的更多信息


请记住,这只是一个例子。如果您尝试使用此选项,您可能需要检查是否确实存在具有您正在搜索的ID的项目。如果是这种情况,您还需要检查框中具有相同ID的多个值。

但我认为您的值可以复制,您可以使用迭代器和If语句来实现这一点,如:
value==“Hello”
,然后从列表中删除该值。但我认为您的值可以复制,你可以使用迭代器和if语句,比如:
value==“Hello”
,然后从列表中删除该值。好的,如果这是唯一的选项,我将迭代每个框的值。谢谢,如果这是唯一的选择,我将迭代每个框的值。谢谢