Flutter Hive:deleteAt 使值变为 null 而不是删除它

Flutter Hive: deleteAt is making the value null instead of deleting it

假设我有一份图书清单。 使用 deleteAt 删除第 n 个索引处的书实际上并不是删除它并将第 (n+1) 个元素移动到它的位置,而是使它成为 null。即第 n 个元素现在是 null.

如何完美地表演deleteAt

顺便说一句,我在 ValueListenableBuilder.

之外使用了 delete
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
           },

您可以从列表中的 List<E> 运行 .removeAt(index)remove an element。这也会将您的最后一个元素向左移动一个索引。

您可以尝试 Book book = box.getAt(index); 而不是 Book book = box.get(index); https://github.com/hivedb/hive/issues/376