如何重新订购 Sembast 商店

问题描述

我创建了一个应用程序,允许用户创建自己的锻炼计划。因此,我将练习存储在 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] 而不更改您的记录,并且仅在移动项目时更新此单例。