问题描述
我创建了一个应用程序,允许用户创建自己的锻炼计划。因此,我将练习存储在 sembast 商店中。
我想知道是否以及如何重新安排锻炼。我打算使用 ReordarableListView,但我只是不明白如何更新 Store 中的数据。我认为最好的方法是用他们自己的 sembastkey(在我的例子中是 int)重新排序练习。但我就是不认识人哈哈哈。
假设我已将练习 7 拖到练习 3 的上方,使用练习 N (N > 3) 完全销毁并重新创建所有练习的列表会不会太过分?这是我能想到的唯一方法,但我希望有一种更有效的方法。如果有人能给我一个关于如何更轻松地解决这个任务的提示,我真的会很高兴。 提前致谢
解决方法
这不是 sembast 特有的,而是确实不容易解决的问题。通常我会添加一个“排序”列,它可以是一个整数。移动项目意味着更新排序值
如果我们有具有给定排序值的项目 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]
而不更改您的记录,并且仅在移动项目时更新此单例。