return ListTile(
tileColor: componnentsColor,
leading: IconButton(
icon: widget.isDone? const Icon(Icons.check_box) : const Icon(Icons.check_box_outline_blank),
color: textColor,
onPressed: () {
setState(() {
widget.isDone = !widget.isDone;
if (widget.isList){
Lists dbList= listsBox.get(widget.listName);
dbList.tasks.add(Task(isDone: widget.isDone, task: widget.taskName, description: widget.taskDescription, date: widget.taskDate));
listsBox.put(widget.listName, Lists(isDone: dbList.isDone, task: dbList.task, description: dbList.description, tasks: dbList.tasks));
}else{
taskBox.put(widget.taskName, Task(isDone: widget.isDone, task: widget.taskName, description: widget.taskDescription, date: widget.taskDate));
}
});
},
),
title: Text(
widget.taskName,
style: const TextStyle(
color: textColor,
),
),
subtitle: Text(
'${widget.taskDate}',
style: const TextStyle(
color: textColor,
),
),
trailing: const Icon(
Icons.expand_more,
color: textColor,
),
onTap: () {
},
);
这段代码以及我更改状态的确切时间。 我更新局部变量: widget.isDone = !widget.isDone; 我通过变量 isList 检查它是否是一个列表; 我想使用以下代码更新我的配置单元数据库: if (widget.isList){ 列表 dbList=listsBox.get(widget.listName); dbList.tasks.add(任务(isDone: widget.isDone, 任务: widget.taskName, 描述: widget.taskDescription, 日期: widget.taskDate)); listBox.put(widget.listName, Lists(isDone: dbList.isDone, 任务: dbList.task, 描述: dbList.description, 任务: dbList.tasks)); } 问题:
它重复了我列表中的待办事项,因此我得到的不是带有更新的 isDone 变量的待办事项 两种:一种更新了,一种未更新......知道发生了什么事吗?
我发现了问题。我自己使用 list.add 复制它...
相反,我需要使用 dbList.tasks[dbList.tasks.indexWhere((element) => element?.task == widget.taskName)]?.isDone = widget.isDone;