所以说我有一个书清单。
实际上,使用deleteAt
删除第n个索引的书并不是删除它,而是将第(n + 1)个元素移到它的位置,而是使它成为null
。即第n个元素现在为null
。
如何完美执行deleteAt
?
顺便说一句,我在ValueListenableBuilder
之外使用了删除。
ValueListenableBuilder(
valueListenable: Hive.box('books').listenable(),
builder: (context, box, _) {
if (box.values.length == 0)
return Center(
child: Text("No books"),
);
return ListView.builder(
primary: true,
padding: EdgeInsets.only(bottom: 95),
itemCount: box.values.length,
itemBuilder: (context, int index) {
Book book = box.get(index);
return Padding(
padding:
const EdgeInsets.only(bottom: kMasterPadding),
child: BookItem(
title: book.title,
author: book.authorName,
),
);
},
);
},
),
删除代码
() async {
await Hive.box("books").deleteAt(Hive.box("books").length - 2);
//deleted at last 2nd coz deleting at the end was working perfectly
},
答案 0 :(得分:0)
您可以通过在列表上运行List<E>
从.removeAt(index)
remove an element。这也会使最后一个元素向左移动一个索引。
答案 1 :(得分:0)
您可以尝试使用Book book = box.getAt(index);
代替Book book = box.get(index);
https://github.com/hivedb/hive/issues/376