在Flutter Hive中按索引删除多个项目

30byixjq  于 2023-08-07  发布在  Flutter
关注(0)|答案(1)|浏览(160)

我在做一个有Flat Hive的手推车。我想选择多个项目,然后从购物车使用索引删除!因为可能有2个项目具有相同的标题但不同的尺寸或数量。Hive没有提供这样的方法。只接受多个键而不是索引的deleteAll()。
我把选定的索引存储在一个List中,但是当我试图使用for循环删除它们时,它不起作用,因为索引在每次删除操作后都会发生变化。

x6492ojm

x6492ojm1#

hive本身似乎首先获取 index 处项的键,然后在调用deleteAt()时使用delete()函数
因此,与循环相比,一个潜在的解决方案是在所有索引上循环,使用box.keyAt()获取每个索引的键,然后使用box.deleteAll()删除项。
范例:

// Indices to Remove
List<int> indices = [5, 7, 8, 12];

// List to stores keys to remove
List<dynamic> toRemove = [];

// Get all keys from indices
for (int i in indices) {
    toRemove.append(box.keyAt(i));
}

// Remove all keys from box
box.deleteAll(toRemove);

字符串
然而,在removeAt()上循环似乎是最简单的解决方案(记住从最大索引到最小索引,而不是相反,否则会删 debugging 误的数据)。
我将在几个小时内制作一个PR修复,这样你就可以运行类似removeIndices()的东西来删除索引列表。如果你有一个更好的名字,请让我知道通过回复。

相关问题