为最喜欢的字段更新 Hive 框中的布尔值
Updating Boolean value in Hive box for favorite field
我从我的 Hive 框中创建了一个特定类型的 Widget 列表。
Hive.box<Job>('jobBox').values.where((element) => element.jobType == selectedType).toList().map(
(jobList)
我已经创建了一个收藏夹按钮,它根据 Hive 框中的初始存储值生成,所以如果它已经设置为 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 更新收藏夹图标并更改值,但在关闭并重新打开应用程序时,它会恢复 Hive 框中的原始默认值。这是有道理的,因为我还没有更新 Hive 框。
但是在 Hive 框中更新此 fav 值的正确方法是什么?我已经尝试使用 jobID 作为索引的 putAt,我认为这让我找到了正确的记录。但是,我该如何将收藏夹字段从 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 开始,Hive 框上的索引从 0 开始。我可以稍后返回并更改它。我没有找到一种方法来更新 Hive Box 中的 fav 值,但是如果我这样做,通过更新列表然后将该项目放入相同索引的框中,它在关闭应用程序并重新打开时确实存在应用
但是一旦失去与 IDE 终端的连接,它就不会在未来的更改和应用程序重新启动时持续存在。这有什么原因吗?
我从我的 Hive 框中创建了一个特定类型的 Widget 列表。
Hive.box<Job>('jobBox').values.where((element) => element.jobType == selectedType).toList().map(
(jobList)
我已经创建了一个收藏夹按钮,它根据 Hive 框中的初始存储值生成,所以如果它已经设置为 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 更新收藏夹图标并更改值,但在关闭并重新打开应用程序时,它会恢复 Hive 框中的原始默认值。这是有道理的,因为我还没有更新 Hive 框。
但是在 Hive 框中更新此 fav 值的正确方法是什么?我已经尝试使用 jobID 作为索引的 putAt,我认为这让我找到了正确的记录。但是,我该如何将收藏夹字段从 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 开始,Hive 框上的索引从 0 开始。我可以稍后返回并更改它。我没有找到一种方法来更新 Hive Box 中的 fav 值,但是如果我这样做,通过更新列表然后将该项目放入相同索引的框中,它在关闭应用程序并重新打开时确实存在应用
但是一旦失去与 IDE 终端的连接,它就不会在未来的更改和应用程序重新启动时持续存在。这有什么原因吗?