0

我创建了一个允许用户创建自己的锻炼计划的应用程序。因此,我将练习存储在 sembast 商店中。

我想知道是否以及如何重新安排锻炼。我计划使用 ReordarableListView,但我只是不明白如何更新 Store 中的数据。我认为最好的方法是使用他们自己的 sembastkey(在我的情况下为 int)重新排序练习。但我就是不认识人哈哈哈。

假设我已经将练习 7 拖到练习 3 的上方,那么完全破坏并重新创建所有练习 N (N > 3) 的练习列表会不会过大?这是我能想到的唯一方法,但我希望有更有效的方法。如果有人能给我提示如何更轻松地解决此任务,我将非常高兴。先感谢您

4

1 回答 1

0

这不是特定于 sembast 的,但实际上并不总是很容易解决。通常我会添加一个可以是 int 的“排序”列。移动项目意味着更新排序值

如果我们有具有给定排序值的项目 A、B 和 C

A 100
B 200
C 300

并且想要在 B 和 C 之间移动 A,那么您可以将 A 排序值设置为 250

B 200
A 250
C 300

如果 B 和 C 之间没有值,则此解决方案会变得更加复杂,因为您必须同时更新 A 和 B 或 C 排序值

一个最简单的解决方案是存储一个包含所有键的单个列表的附加单例,即[A,B,C]不更改您的记录,并且仅在移动项目时更新此单例。

于 2021-05-05T18:34:40.163 回答