正在更新收藏夹字段的配置单元框中的布尔值



在配置单元框中,我创建了一个特定类型的小工具列表。

Hive.box<Job>('jobBox').values.where((element) => element.jobType == selectedType).toList().map(
(jobList)

我已经创建了一个收藏夹按钮,它根据配置单元框中初始存储的值生成,所以如果它已经设置为true或false。

GestureDetector(
child: Icon(
jobList.fav
? Icons.favorite
: Icons.favorite_border,
color: jobList.fav ? Colors.red.shade200 : Colors.grey,
),
onTap: () {
if (jobList.fav == true){
setState(() {
jobList.fav = false;
// Hive.box<Job>('jobBox').putAt(); //This is where I am having my problem
print(jobList.jobID );
print(jobList.fav );
});
}
else{
setState(() {
jobList.fav = true;
// Hive.box<Job>('jobBox').putAt(); //This is where I am having my problem
print(jobList.jobID );
print(jobList.fav );
});
}
}
// )
),

setState会更新收藏夹图标并更改值,但在关闭和重新打开应用程序时,它会恢复配置单元框中的原始默认值。这是有道理的,因为我还没有更新蜂巢框。

但是,在蜂巢框中更新这个最喜欢的值的正确方法是什么?我已经尝试过使用jobID作为索引的putAt,我想这会让我找到正确的记录。但是,我如何将fav字段从true更改为false或从false更改为true?

是否必须覆盖此索引框中的所有字段值?

Hive.box<Job>('jobBox').putAt(jobList.jobID, ???);

所以我更改了这个

jobList.fav = true;
// Hive.box<Job>('jobBox').putAt();

对此:

jobList.fav = true;
Hive.box<Job>('jobBox').putAt(jobList.jobID-1, job);

我必须执行-1,因为我的作业ID从1开始,配置单元框上的索引从0开始。我稍后可以回去更改。我没有找到一种方法来更新Hive Box中的fav值,但如果我这样做,通过更新列表,然后将该项目放入框中,其索引与关闭应用程序和重新打开应用程序时保持的索引相同。

但一旦它失去了与IDE终端的连接,它就不会在未来的更改和应用程序重新启动中持续存在。这是有原因的吗?

最新更新