我有一个 Job 类,其中有分配给它的任务列表。一切正常,但我正在尝试添加一个布尔字段以将作业标记为完成。现在我没有检查所有子任务。只是一个简单的复选框,表示作业是否完成。
我有一个数据文件,其中包含预定义的作业和任务。如果我将 true 或 false 分配给数据文件中的完整变量,它会全部加载,复选框被填充,等等......但我无法更改该值,因为它是硬编码的。
如果我不定义值,我会得到一个布尔表达式不能为空错误。
所以在我的 Widget 中,我生成了作业列表(可以按下它以显示任务列表),我假设我需要在呈现列表之前初始化完整变量。在我添加布尔变量之前,这个小部件是一个无状态小部件,我已经将它更改为有状态,因为我认为我需要 setState() 来更改布尔变量。但由于作业位于数据文件中,因此我在尝试分配或更改布尔变量时遇到了一些困难。
我所缺少的任何提示将不胜感激。
class Job {
int jobID;
List<Task> task_list;
String imageURL;
String jobName;
bool complete;
Job({
this.jobId,
this.task_list,
this.imageURL,
this.jobName,
this.complete,
});
}
class Task{
int taskID;
String imageURL;
String name;
String type;
int taskTime;
Task({
this.taskID,
this.imageURL,
this.name,
this.type,
this.taskTime,
})
}
答案 0 :(得分:0)
有没有可能是用sqflite
生成的数据文件?如果是,则必须使用 bool
和 int
将 0
类型字段更改为 1
字段以表示 bool
答案 1 :(得分:0)
如果您想查看小部件的更改,您必须用 setState(() {complete = true});
答案 2 :(得分:0)
对于您的 Job
类构造函数,您能否更改:
Job({
this.jobId,
this.task_list,
this.imageURL,
this.jobName,
this.complete,
});
为此:
Job({
this.jobId,
this.task_list,
this.imageURL,
this.jobName,
this.complete = false,
});
给 complete
一个默认值 false
应该可以避免 must not be null
错误。我认为这是可以的,因为默认情况下不应完成一项工作,对吗?